invoice_printer 1.2.0.alpha1 → 1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8abb69910f861a930c17f4a59b2f00c5c7530556
4
- data.tar.gz: b4b108dc6b68db259a24a9fca49db4eb78ab0a9b
3
+ metadata.gz: 6ddd0a166f35069b45db3f5c65500c8266944d76
4
+ data.tar.gz: a40efb4a2f1dabf24979ec48e55687ef372f8800
5
5
  SHA512:
6
- metadata.gz: 126cddc2f3e5cf893cf94f18abdd2b7966399f993f0ff29826adff0d1b77f26ea08c8de3feb6b036c4c5b12027ebbd90b41ef54f3b1b9fecc6e80bc88c9a530c
7
- data.tar.gz: db9b42fb49fa1c303c0f6a6abeb1408cd2940960efc529107372f9581d21248eb982ce1f3eaf4e4bee23ce6d3bb759972aeabfd3f4611aec42cd295d961968e2
6
+ metadata.gz: 5c3f7dd04900eb6c8f9dc8d33af717a8478b67b8e0102e1ff16a884572ba72a9539b8da828cbd87a87bef8a684c051e865e5394fd549b3da461b8d77c353a78b
7
+ data.tar.gz: 941c1108dd6881bb4a6712070da699074dd34c430eb782409a01efb79d9453e884dc235eacf1a42a74a17ac67eb2005f0b8506855563eaa5d3fdcccef6ba32f1
data/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  - **Simple**, no styling required, no calculation, no money formatting (bring your own)
10
10
  - **Pure Ruby**, no dependency on system libraries or browsers
11
- - **Fast**, so you can render invoice on the fly during request
11
+ - **Fast**, so you can render invoices on the fly during requests
12
12
 
13
13
  ## Examples
14
14
 
data/docs/SERVER.md CHANGED
@@ -62,7 +62,9 @@ On error a `400` response is returned:
62
62
  { "result": "error", "error": "error description" }
63
63
  ```
64
64
 
65
- #### Example
65
+ #### Examples
66
+
67
+ ##### curl
66
68
 
67
69
  Example of calling the API to render a document using `curl`:
68
70
 
@@ -70,6 +72,10 @@ Example of calling the API to render a document using `curl`:
70
72
  $ curl -X POST http://0.0.0.0:9393/render -H "Content-Type: application/json" --data '{"document":{"number":"c. 198900000001","provider_name":"Petr Novy","provider_tax_id":"56565656","provider_tax_id2":"","provider_street":"Rolnicka","provider_street_number":"1","provider_postcode":"747 05","provider_city":"Opava","provider_city_part":"Katerinky","provider_extra_address_line":"","purchaser_name":"Adam Cerny","purchaser_tax_id":"","purchaser_tax_id2":"","purchaser_street":"Ostravska","purchaser_street_number":"1","purchaser_postcode":"747 70","purchaser_city":"Opava","purchaser_city_part":"","purchaser_extra_address_line":"","issue_date":"05/03/2016","due_date":"19/03/2016","subtotal":"Kc 10.000","tax":"Kc 2.100","tax2":"","tax3":"","total":"Kc 12.100,-","bank_account_number":"156546546465","account_iban":"IBAN464545645","account_swift":"SWIFT5456","items":[{"name":"Konzultace","quantity":"2","unit":"hod","price":"Kc 500","tax":"","tax2":"","tax3":"","amount":"Kc 1.000"},{"name":"Programovani","quantity":"10","unit":"hod","price":"Kc 900","tax":"","tax2":"","tax3":"","amount":"Kc 9.000"}],"note":"Osoba je zapsána v zivnostenském rejstríku."}}'
71
73
  ```
72
74
 
75
+ ##### Node.js
76
+
77
+ See [/examples/clients/node.js](/examples/clients/node.js).
78
+
73
79
  ### `POST /print`
74
80
 
75
81
  Print resulting document to a file.
@@ -0,0 +1,125 @@
1
+ // Example: Create a PDF invoice and save it to a file called invoice_from_node.pdf
2
+ //
3
+ // This example requires InvoicePrinter Server to be running.
4
+ //
5
+ // You can run the server as:
6
+ // $ invoice_printer_server
7
+ //
8
+ // And run this example as:
9
+ // $ node node.js
10
+
11
+ const invoice = {
12
+ "number": "NO. 198900000001",
13
+ "provider_name": "John White",
14
+ "provider_tax_id": "",
15
+ "provider_tax_id2": "",
16
+ "provider_street": "5th Avenue",
17
+ "provider_street_number": "1",
18
+ "provider_postcode": "747 05",
19
+ "provider_city": "NYC",
20
+ "provider_city_part": "",
21
+ "provider_extra_address_line": "",
22
+ "purchaser_name": "Will Black",
23
+ "purchaser_tax_id": "",
24
+ "purchaser_tax_id2": "",
25
+ "purchaser_street": "7th Avenue",
26
+ "purchaser_street_number": "1",
27
+ "purchaser_postcode": "747 70",
28
+ "purchaser_city": "NYC",
29
+ "purchaser_city_part": "",
30
+ "purchaser_extra_address_line": "",
31
+ "issue_date": "05/03/2016",
32
+ "due_date": "19/03/2016",
33
+ "subtotal": "$ 1,000",
34
+ "tax": "$ 100",
35
+ "tax2": "",
36
+ "tax3": "",
37
+ "total": "$ 1,100",
38
+ "bank_account_number": "156546546465",
39
+ "account_iban": "",
40
+ "account_swift": "",
41
+ "items": [
42
+ {
43
+ "name": "Programming",
44
+ "quantity": "10",
45
+ "unit": "hr",
46
+ "price": "$ 60",
47
+ "tax": "$ 60",
48
+ "tax2": "",
49
+ "tax3": "",
50
+ "amount": "$ 600"
51
+ },
52
+ {
53
+ "name": "Consulting",
54
+ "quantity": "10",
55
+ "unit": "hr",
56
+ "price": "$ 30",
57
+ "tax": "$ 30",
58
+ "tax2": "",
59
+ "tax3": "",
60
+ "amount": "$ 300"
61
+ },
62
+ {
63
+ "name": "Support",
64
+ "quantity": "20",
65
+ "unit": "hr",
66
+ "price": "$ 15",
67
+ "tax": "$ 30",
68
+ "tax2": "",
69
+ "tax3": "",
70
+ "amount": "$ 330"
71
+ }
72
+ ],
73
+ "note": "This is a note at the end."
74
+ }
75
+
76
+ const http = require('http');
77
+ const fs = require('fs');
78
+
79
+ // Prepare the JSON in the expected format
80
+ const postData = JSON.stringify({
81
+ "document" : invoice
82
+ });
83
+
84
+ // Prepare POST options such as correct headers
85
+ const postOptions = {
86
+ host: 'localhost',
87
+ port: '9393',
88
+ path: '/render',
89
+ method: 'POST',
90
+ headers: {
91
+ 'Content-Type': 'application/json'
92
+ }
93
+ };
94
+
95
+ const postRequest = http.request(postOptions, (resp) => {
96
+ let data = '';
97
+
98
+ resp.on('data', (chunk) => {
99
+ data += chunk;
100
+ });
101
+
102
+ // Save the PDF if everything went okay
103
+ resp.on('end', () => {
104
+ response = JSON.parse(data);
105
+
106
+ if (response["data"]) {
107
+ const pdf = Buffer.from(response["data"], 'base64');
108
+
109
+ fs.writeFile("invoice_from_node.pdf", pdf, function(err) {
110
+ if(err) {
111
+ return console.log(err);
112
+ }
113
+
114
+ console.log("The file was saved!");
115
+ });
116
+ } else {
117
+ console.log("Error: " + response["error"])
118
+ }
119
+ });
120
+ }).on("error", (err) => {
121
+ console.log("Error: " + err.message);
122
+ });
123
+
124
+ postRequest.write(postData);
125
+ postRequest.end();
@@ -1,3 +1,3 @@
1
1
  module InvoicePrinter
2
- VERSION = '1.2.0.alpha1'
2
+ VERSION = '1.2.0'
3
3
  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: 1.2.0.alpha1
4
+ version: 1.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: 2018-03-24 00:00:00.000000000 Z
11
+ date: 2018-05-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -130,6 +130,7 @@ files:
130
130
  - docs/LIBRARY.md
131
131
  - docs/SERVER.md
132
132
  - examples/background.png
133
+ - examples/clients/node.js
133
134
  - examples/complex_invoice.rb
134
135
  - examples/czech_invoice.rb
135
136
  - examples/international_invoice.rb
@@ -176,12 +177,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
176
177
  version: '0'
177
178
  required_rubygems_version: !ruby/object:Gem::Requirement
178
179
  requirements:
179
- - - ">"
180
+ - - ">="
180
181
  - !ruby/object:Gem::Version
181
- version: 1.3.1
182
+ version: '0'
182
183
  requirements: []
183
184
  rubyforge_project:
184
- rubygems_version: 2.6.14
185
+ rubygems_version: 2.6.14.1
185
186
  signing_key:
186
187
  specification_version: 4
187
188
  summary: Super simple PDF invoicing in pure Ruby