invoice_printer 1.3.0 → 2.0.0.alpha1

Sign up to get free protection for your applications and to get access to all the features.
@@ -16,21 +16,11 @@ module InvoicePrinterHelpers
16
16
  provider_name: 'Business s.r.o.',
17
17
  provider_tax_id: '56565656',
18
18
  provider_tax_id2: '465454',
19
- provider_street: 'Rolnicka',
20
- provider_street_number: '1',
21
- provider_postcode: '747 05',
22
- provider_city: 'Opava',
23
- provider_city_part: 'Katerinky',
24
- provider_extra_address_line: 'Czech Republic',
19
+ provider_lines: default_provider_address,
25
20
  purchaser_name: 'Adam',
26
21
  purchaser_tax_id: nil,
27
22
  purchaser_tax_id2: nil,
28
- purchaser_street: 'Ostravska',
29
- purchaser_street_number: '1',
30
- purchaser_postcode: '747 70',
31
- purchaser_city: 'Opava',
32
- purchaser_city_part: '',
33
- purchaser_extra_address_line: '',
23
+ purchaser_lines: default_purchaser_address,
34
24
  issue_date: '19/03/3939',
35
25
  due_date: '19/03/3939',
36
26
  subtotal: '175',
@@ -49,6 +39,22 @@ module InvoicePrinterHelpers
49
39
  }
50
40
  end
51
41
 
42
+ def default_provider_address
43
+ <<~ADDRESS
44
+ Rolnicka 1
45
+ 747 05 Opava
46
+ Katerinky
47
+ Czech Republic
48
+ ADDRESS
49
+ end
50
+
51
+ def default_purchaser_address
52
+ <<~ADDRESS
53
+ Ostravska 1
54
+ 747 70 Opava
55
+ ADDRESS
56
+ end
57
+
52
58
  def default_document_item_params
53
59
  {
54
60
  name: 'Web consultation',
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.3.0
4
+ version: 2.0.0.alpha1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josef Strzibny
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-31 00:00:00.000000000 Z
11
+ date: 2019-07-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -24,88 +24,60 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.1'
27
- - !ruby/object:Gem::Dependency
28
- name: roda
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - '='
32
- - !ruby/object:Gem::Version
33
- version: 3.5.0
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - '='
39
- - !ruby/object:Gem::Version
40
- version: 3.5.0
41
- - !ruby/object:Gem::Dependency
42
- name: puma
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '3.9'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '3.9'
55
27
  - !ruby/object:Gem::Dependency
56
28
  name: prawn
57
29
  requirement: !ruby/object:Gem::Requirement
58
30
  requirements:
59
- - - '='
31
+ - - "~>"
60
32
  - !ruby/object:Gem::Version
61
33
  version: 2.1.0
62
34
  type: :runtime
63
35
  prerelease: false
64
36
  version_requirements: !ruby/object:Gem::Requirement
65
37
  requirements:
66
- - - '='
38
+ - - "~>"
67
39
  - !ruby/object:Gem::Version
68
40
  version: 2.1.0
69
41
  - !ruby/object:Gem::Dependency
70
42
  name: prawn-layout
71
43
  requirement: !ruby/object:Gem::Requirement
72
44
  requirements:
73
- - - '='
45
+ - - "~>"
74
46
  - !ruby/object:Gem::Version
75
47
  version: 0.8.4
76
48
  type: :runtime
77
49
  prerelease: false
78
50
  version_requirements: !ruby/object:Gem::Requirement
79
51
  requirements:
80
- - - '='
52
+ - - "~>"
81
53
  - !ruby/object:Gem::Version
82
54
  version: 0.8.4
83
55
  - !ruby/object:Gem::Dependency
84
56
  name: bundler
85
57
  requirement: !ruby/object:Gem::Requirement
86
58
  requirements:
87
- - - "~>"
59
+ - - ">="
88
60
  - !ruby/object:Gem::Version
89
61
  version: '1.7'
90
62
  type: :development
91
63
  prerelease: false
92
64
  version_requirements: !ruby/object:Gem::Requirement
93
65
  requirements:
94
- - - "~>"
66
+ - - ">="
95
67
  - !ruby/object:Gem::Version
96
68
  version: '1.7'
97
69
  - !ruby/object:Gem::Dependency
98
70
  name: rake
99
71
  requirement: !ruby/object:Gem::Requirement
100
72
  requirements:
101
- - - "~>"
73
+ - - ">="
102
74
  - !ruby/object:Gem::Version
103
75
  version: '10.0'
104
76
  type: :development
105
77
  prerelease: false
106
78
  version_requirements: !ruby/object:Gem::Requirement
107
79
  requirements:
108
- - - "~>"
80
+ - - ">="
109
81
  - !ruby/object:Gem::Version
110
82
  version: '10.0'
111
83
  description: Super simple and fast PDF invoicing in pure Ruby (based on Prawn library).
@@ -113,7 +85,6 @@ email:
113
85
  - strzibny@strzibny.name
114
86
  executables:
115
87
  - invoice_printer
116
- - invoice_printer_server
117
88
  extensions: []
118
89
  extra_rdoc_files: []
119
90
  files:
@@ -126,7 +97,6 @@ files:
126
97
  - assets/logo.png
127
98
  - benchmarks/render.yml
128
99
  - bin/invoice_printer
129
- - bin/invoice_printer_server
130
100
  - docs/COMMAND_LINE.md
131
101
  - docs/INSTALLATION.md
132
102
  - docs/LIBRARY.md
@@ -142,14 +112,15 @@ files:
142
112
  - examples/picture.jpg
143
113
  - examples/prawn.png
144
114
  - examples/promo.rb
115
+ - examples/provider_purchaser_lines.rb
145
116
  - examples/simple_invoice.rb
146
117
  - examples/stamp.png
147
118
  - invoice_printer.gemspec
119
+ - invoice_printer_server.gemspec
148
120
  - lib/invoice_printer.rb
149
121
  - lib/invoice_printer/document.rb
150
122
  - lib/invoice_printer/document/item.rb
151
123
  - lib/invoice_printer/pdf_document.rb
152
- - lib/invoice_printer/server.rb
153
124
  - lib/invoice_printer/version.rb
154
125
  - test/api_test.rb
155
126
  - test/background_test.rb
@@ -180,12 +151,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
180
151
  version: '0'
181
152
  required_rubygems_version: !ruby/object:Gem::Requirement
182
153
  requirements:
183
- - - ">="
154
+ - - ">"
184
155
  - !ruby/object:Gem::Version
185
- version: '0'
156
+ version: 1.3.1
186
157
  requirements: []
187
- rubyforge_project:
188
- rubygems_version: 2.6.14.1
158
+ rubygems_version: 3.0.3
189
159
  signing_key:
190
160
  specification_version: 4
191
161
  summary: Super simple PDF invoicing in pure Ruby
@@ -1,69 +0,0 @@
1
- #!/usr/bin/env ruby
2
- $LOAD_PATH << File.expand_path('lib')
3
-
4
- require 'optparse'
5
- require 'rack/handler/puma'
6
- require 'invoice_printer/server'
7
-
8
- def show_version
9
- puts "InvoicePrinter v#{InvoicePrinter::VERSION}"
10
-
11
- exit 0
12
- end
13
-
14
- def show_help
15
- puts <<~HELP
16
- Usage: invoice_printer_server [options]
17
-
18
- Options:
19
-
20
- -h, --host hostname to listen on (default is 0.0.0.0)
21
- -p, --port port to listen on (default is 9393)
22
- -w, --workers number of Puma workers (default is 2)
23
-
24
- HELP
25
-
26
- exit 0
27
- end
28
-
29
- options = {}
30
-
31
- parser = OptionParser.new do|opts|
32
- opts.on('-h', '--hostname ADDRESS') do |address|
33
- options[:Host] = address
34
- end
35
-
36
- opts.on('-p', '--port NUMBER') do |number|
37
- options[:Port] = number
38
- end
39
-
40
- opts.on('-w', '--workers NUMBER') do |number|
41
- options[:workers] = number.to_i
42
- end
43
-
44
- opts.on('--debug') do
45
- options[:debug] = true
46
- end
47
-
48
- opts.on('-h', '--help') do
49
- show_help
50
- end
51
- end
52
-
53
- parser.parse!
54
-
55
- puma_options = { :Host => '0.0.0.0', :Port => 9393, :workers => 2 }.merge(options)
56
-
57
- begin
58
- puts 'Starting InvoicePrinter Server...'
59
- Rack::Handler::Puma.run(InvoicePrinter::Server.freeze.app, puma_options)
60
- rescue => e
61
- STDERR.puts "ERROR: #{e.message}"
62
-
63
- if options[:debug]
64
- STDERR.puts
65
- STDERR.puts e.backtrace
66
- end
67
-
68
- exit 1
69
- end
@@ -1,90 +0,0 @@
1
- require 'base64'
2
- require 'roda'
3
- require 'invoice_printer'
4
-
5
- class InvoicePrinter::Server < Roda
6
- route do |r|
7
- response['Content-Type'] = 'application/json'
8
-
9
- # Assign params
10
- if r.content_type == 'application/json'
11
- begin
12
- params = JSON.parse(r.body.read, symbolize_names: true)
13
- rescue => e
14
- response.status = 400
15
- response.write({ result: 'error', error: 'Invalid JSON.' }.to_json)
16
- r.halt
17
- end
18
-
19
- document = params[:document]
20
- labels = params[:labels]
21
- font = params[:font]
22
- stamp = params[:stamp]
23
- logo = params[:logo]
24
- background = params[:background]
25
- page_size = params[:page_size]
26
- else
27
- response.status = 400
28
- response.write({ result: 'error', error: 'No JSON. Did you set Content-Type to application/json?' }.to_json)
29
- r.halt
30
- end
31
-
32
- # Initialize InvoicePrinter::Document from given JSON
33
- begin
34
- document[:items] ||= []
35
- items = document[:items].map { |item| InvoicePrinter::Document::Item.new(**item) }
36
- document[:items] = items
37
-
38
- document = InvoicePrinter::Document.new(**document)
39
- rescue => e
40
- response.status = 400
41
- response.write({ result: 'error', error: 'Invalid JSON document.' }.to_json)
42
- r.halt
43
- end
44
-
45
- # POST /print
46
- r.post 'print' do
47
- filename = params[:filename] || 'document.pdf'
48
-
49
- begin
50
- InvoicePrinter.print(
51
- document: document,
52
- labels: labels,
53
- font: font,
54
- stamp: stamp,
55
- logo: logo,
56
- background: background,
57
- page_size: page_size,
58
- file_name: filename
59
- )
60
-
61
- { result: 'ok', path: filename }.to_json
62
- rescue => e
63
- response.status = 400
64
- response.write({ result: 'error', error: e.message }.to_json)
65
- r.halt
66
- end
67
- end
68
-
69
- # POST /render
70
- r.post 'render' do
71
- begin
72
- stream = InvoicePrinter.render(
73
- document: document,
74
- labels: labels,
75
- font: font,
76
- stamp: stamp,
77
- logo: logo,
78
- background: background,
79
- page_size: page_size
80
- )
81
-
82
- { result: 'ok', data: Base64.encode64(stream) }.to_json
83
- rescue => e
84
- response.status = 400
85
- response.write({ result: 'error', error: e.message }.to_json)
86
- r.halt
87
- end
88
- end
89
- end
90
- end