ascii_invoicer 2.5.5 → 2.5.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 186d774a2d826b6b83265d7597ebb7009a321d4f
4
- data.tar.gz: f94639520acbbcee90c511f7539442dd7f7602f6
3
+ metadata.gz: f84258bb06f6de068f343d5ec1ba51150799e703
4
+ data.tar.gz: 4395599f3222f8febe2ce683e108f591901a9859
5
5
  SHA512:
6
- metadata.gz: 4e3d3887e9432fde377decb43b2a2e44383ee73ea04cbe0b75069cb5623a2f095ab95388f6633a676bba7e057f2c64bc63ca1c92f9dd4b3674bbe5aa6d7f49b3
7
- data.tar.gz: 9865ad5aea22a6e4b8e6f42ffa73f571ae0410014da6c3286646409d55e415aeb8f3b8b81dca227fa9dc67287d8627c6e7e13a510a51d316739664b3316a0818
6
+ metadata.gz: dd09954c365791aa28dac616ade11804076ee01b63836d9379b43f78307ff2ecea34b8eea751e9c7819f65520f79f6e395e285937822b56a5b7f2ce80bd38f10
7
+ data.tar.gz: a8eeb5fa5553c2264b6298aa1b4467e4ea1024afe128262e43dc86d78f592cc0f324d1615b1e07ff64e61819df14e288007abe19ff2b5ffbf119d8f5cc88d66d
data/bin/ascii CHANGED
@@ -212,6 +212,30 @@ class Commander < Thor
212
212
  end
213
213
 
214
214
 
215
+ desc "open NAMES", "Open created documents"
216
+ method_option :archive,
217
+ :type=>:numeric, :aliases => "-a", :default => nil,
218
+ :lazy_default=> Date.today.year, :required => false, :desc => "Open File from archive YEAR"
219
+ method_option :offer, :type=>:boolean, :aliases => "-o",
220
+ :default=> false, :lazy_default=> true, :required => false,
221
+ :desc => "Open the offer, otherwise defaults to invoice"
222
+
223
+ def open *names
224
+ choice = :invoice
225
+ choice = :offer if options[:offer]
226
+
227
+ projects = open_projects names, options
228
+ projects.each{|p|
229
+ path = p.output_files[choice]
230
+ unless File.exists? path
231
+ $logger.error "File does not exist: #{path}."
232
+ return false
233
+ else
234
+ open_file path
235
+ end
236
+ }
237
+ end
238
+
215
239
 
216
240
  desc "list", "List current Projects"
217
241
  method_option :archive,
@@ -411,8 +435,8 @@ class Commander < Thor
411
435
  end
412
436
  end
413
437
 
414
- desc "reopen YEAR NAME", "reopen an archived project"
415
- def reopen(year, name)
438
+ desc "unarchive YEAR NAME", "reopen an archived project"
439
+ def unarchive(year, name)
416
440
  projects = $PLUMBER.open_projects_archive year
417
441
  project = projects.lookup_by_name name
418
442
  if project.count > 1
@@ -98,11 +98,13 @@ class InvoiceProject < LuigiProject
98
98
  @raw_data = YAML::load(File.open(project_path))
99
99
  rescue SyntaxError => error
100
100
  @logger.warn "SyntaxError in #{project_path}, use \"edit\" to correct it.", :both
101
+ @logger.info "Check #{@settings.log_file} for details.", :stdo
101
102
  @logger.error error, :file
102
103
  @status = :unparsable
103
104
  return false
104
105
  rescue Psych::SyntaxError => error
105
106
  @logger.warn "SyntaxError in #{project_path}, use \"edit\" to correct it.", :both
107
+ @logger.info "Check #{@settings.log_file} for details.", :stdo
106
108
  @logger.error error, :file
107
109
  @status = :unparsable
108
110
  return false
@@ -272,6 +274,28 @@ class InvoiceProject < LuigiProject
272
274
  return false
273
275
  end
274
276
  end
277
+
278
+ def output_files
279
+ output_path = File.expand_path File.join @settings.output_path
280
+ {
281
+ :offer => File.join(output_path, export_filename(:offer, 'pdf')),
282
+ :invoice => File.join(output_path, export_filename(:invoice, 'pdf'))
283
+ }
284
+ end
285
+
286
+ def state_sign choice
287
+ if validate(choice)
288
+ if File.exists? output_files[choice]
289
+ return Paint[?✓,:green, :bright]
290
+ else
291
+ return Paint[?✓,:green]
292
+ end
293
+ else
294
+ return Paint[?✗,:red]
295
+ end
296
+ end
297
+
298
+
275
299
  end
276
300
 
277
301
  class InvoiceProduct
@@ -85,8 +85,8 @@ module AsciiMixins
85
85
  project.data[:manager],
86
86
  project.data[:invoice][:number],
87
87
  project.date.strftime("%d.%m.%Y"),
88
- project.validate(:offer).print,
89
- project.validate(:invoice).print,
88
+ project.state_sign(:offer),
89
+ project.state_sign(:invoice),
90
90
  project.validate(:payed).print($SETTINGS.currency_symbol),
91
91
  # try these: ☑☒✉☕☀☻
92
92
  ]
@@ -98,8 +98,8 @@ module AsciiMixins
98
98
  projects.each_index do |i|
99
99
  p = projects[i]
100
100
  table.add_row [
101
- (i+1).to_s+".",
102
- p.name.ljust(35),
101
+ (i+1).to_s+".",
102
+ p.name.ljust(35),
103
103
  p.data[:project_path]
104
104
  ]
105
105
  end
@@ -132,7 +132,7 @@ module AsciiMixins
132
132
  puts "...\n\n"
133
133
  end
134
134
  end
135
-
135
+
136
136
  def caterers_string project, join = ", "
137
137
  data = project.data
138
138
  data[:hours][:caterers].map{|name, hours| "#{name} (#{hours})" if hours > 0 }.join join if data[:hours][:caterers]
@@ -249,6 +249,18 @@ module AsciiMixins
249
249
  end
250
250
  end
251
251
 
252
+ ## hand path to default programm
253
+ def open_file path
254
+ unless path.class == String and File.exists? path
255
+ $logger.error "Cannot open #{path}", :both
256
+ return false
257
+ end
258
+ opener = $SETTINGS.opener
259
+ $logger.info "Opening #{path} in #{opener}"
260
+ pid = spawn "#{opener} \"#{path}\""
261
+ Process.wait pid
262
+ end
263
+
252
264
  ## hand path to editor
253
265
  def edit_files(paths, editor = $SETTINGS.editor)
254
266
  paths = [paths] if paths.class == String
@@ -1,3 +1,3 @@
1
1
  module AsciiInvoicer
2
- VERSION = '2.5.5'
2
+ VERSION = '2.5.6'
3
3
  end
@@ -2,6 +2,7 @@
2
2
  manager_name: "The Unnamed Manager"
3
3
  verbose: false
4
4
  editor: "vim -O"
5
+ opener: "xdg-open"
5
6
  colors: false
6
7
  list_sort: index
7
8
 
@@ -1,9 +1,10 @@
1
1
  ---
2
- #manager_name: "The Unnamed Manager"
2
+ manager_name: "The Unnamed Manager"
3
3
  #verbose: false
4
4
  #editor: "vim -O"
5
+ #opener: "xdg-open"
5
6
  #colors: false
6
- #list_sort: date # index, name
7
+ #list_sort: index # index, date, name
7
8
 
8
9
  #path: "~" #/where/you/want/to/put/the/dirs
9
10
  #output_path: "."
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ascii_invoicer
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.5
4
+ version: 2.5.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hendrik Sollich
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-24 00:00:00.000000000 Z
11
+ date: 2015-02-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec