ascii_invoicer 2.5.9 → 2.5.10
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 +4 -4
- data/bin/ascii +8 -6
- data/lib/ascii_invoicer.rb +7 -17
- data/lib/ascii_invoicer/InvoiceProject.rb +1 -1
- data/lib/ascii_invoicer/mixins.rb +51 -2
- data/lib/ascii_invoicer/version.rb +1 -1
- data/settings/default-settings.yml +1 -1
- metadata +9 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 695e518f05626d7d49ff52e39a29005057357ab2
|
4
|
+
data.tar.gz: 8a17c19f7331d0b5ae76babf591ec2d2d975ef50
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6f6a9bf9d506f143fa8d1fa50844575cbda4c1122f608b02c7d6567ce8eabe5db376eae9c5b8fa46cea4890da48595b7913b82877c03d555d1f8d4a8881d0117
|
7
|
+
data.tar.gz: aaf28dd551e743f293538c9cf450e74b8c792b01a93e543d1ebae784b43a4f0a5b27288c2203812d40a889f54a19244ee8562bfc7441034a4f923344c0d04838
|
data/bin/ascii
CHANGED
@@ -4,10 +4,10 @@ require 'pp'
|
|
4
4
|
require 'csv'
|
5
5
|
require 'yaml'
|
6
6
|
require 'thor'
|
7
|
-
require 'euro'
|
8
7
|
require 'paint'
|
9
8
|
require 'luigi'
|
10
9
|
require 'logger'
|
10
|
+
require 'bundler/setup'
|
11
11
|
require 'textboxes'
|
12
12
|
require 'hash-graft'
|
13
13
|
|
@@ -39,6 +39,8 @@ $SETTINGS.version = $VERSION = AsciiInvoicer::VERSION
|
|
39
39
|
## path to the project File, here we expand the "~"
|
40
40
|
$SETTINGS.path = File.expand_path $SETTINGS.path
|
41
41
|
|
42
|
+
## money
|
43
|
+
$SETTINGS.currency_symbol = Money::Currency.new($SETTINGS.currency).symbol
|
42
44
|
|
43
45
|
## "security"
|
44
46
|
#error "settings:editor is an elaborate string: \"#{$SETTINGS.editor}\"!\nDANGEROUS!" if $SETTINGS.editor.include? " "
|
@@ -264,6 +266,9 @@ class Commander < Thor
|
|
264
266
|
method_option :caterers, :type=>:boolean,
|
265
267
|
:lazy_default=> true, :required => false, :desc => "list caterers"
|
266
268
|
|
269
|
+
method_option :wages, :type=>:boolean,
|
270
|
+
:lazy_default=> true, :required => false, :desc => "list wages"
|
271
|
+
|
267
272
|
method_option :blockers, :type=>:boolean, :aliases => '-b',
|
268
273
|
:lazy_default=> true, :required => false, :desc => "list blockers"
|
269
274
|
|
@@ -292,10 +297,8 @@ class Commander < Thor
|
|
292
297
|
hash = {}
|
293
298
|
hash[:verbose] = (options[:verbose] and !options[:simple])
|
294
299
|
hash[:colors] = (options[:colors] and !options[:no_colors])
|
295
|
-
|
296
|
-
|
297
|
-
hash[:caterers] = options[:caterers]
|
298
|
-
hash[:details] = options[:details]
|
300
|
+
[ :errors, :blockers,
|
301
|
+
:caterers, :wages, :details ].each {|name| hash[name] = options[name]}
|
299
302
|
|
300
303
|
if options[:paths]
|
301
304
|
map = $PLUMBER.map_project_files_working()
|
@@ -317,7 +320,6 @@ class Commander < Thor
|
|
317
320
|
if options[:final]
|
318
321
|
hash[:details] = [] if hash[:details].nil?
|
319
322
|
hash[:details] << "invoice/final"
|
320
|
-
puts hash
|
321
323
|
end
|
322
324
|
|
323
325
|
if options[:all]
|
data/lib/ascii_invoicer.rb
CHANGED
@@ -1,17 +1,7 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
require "ascii_invoicer/ascii_logger"
|
9
|
-
rescue LoadError
|
10
|
-
require "./lib/ascii_invoicer/version"
|
11
|
-
require "./lib/ascii_invoicer/settings_manager"
|
12
|
-
require "./lib/ascii_invoicer/InvoiceProject"
|
13
|
-
require "./lib/ascii_invoicer/hash_transformer"
|
14
|
-
require "./lib/ascii_invoicer/tweaks"
|
15
|
-
require "./lib/ascii_invoicer/mixins"
|
16
|
-
require "./lib/ascii_invoicer/ascii_logger"
|
17
|
-
end
|
1
|
+
require "ascii_invoicer/version"
|
2
|
+
require "ascii_invoicer/settings_manager"
|
3
|
+
require "ascii_invoicer/InvoiceProject"
|
4
|
+
require "ascii_invoicer/hash_transformer"
|
5
|
+
require "ascii_invoicer/tweaks"
|
6
|
+
require "ascii_invoicer/mixins"
|
7
|
+
require "ascii_invoicer/ascii_logger"
|
@@ -1,5 +1,47 @@
|
|
1
1
|
require 'icalendar'
|
2
2
|
require 'fileutils'
|
3
|
+
require 'money'
|
4
|
+
|
5
|
+
module EuroConversion
|
6
|
+
|
7
|
+
def euro
|
8
|
+
self.to_euro
|
9
|
+
end
|
10
|
+
|
11
|
+
def €
|
12
|
+
self.to_euro
|
13
|
+
end
|
14
|
+
|
15
|
+
def to_euro
|
16
|
+
Money.new self*100, $SETTINGS.currency
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
class Money
|
22
|
+
def to_s
|
23
|
+
value = self.amount
|
24
|
+
a,b = sprintf("%0.2f", value.to_s).split('.')
|
25
|
+
a.gsub!(/(\d)(?=(\d{3})+(?!\d))/, '\\1.')
|
26
|
+
"#{a}#{self.currency.separator}#{b}#{self.currency.symbol}"
|
27
|
+
end
|
28
|
+
|
29
|
+
def to_euro
|
30
|
+
self
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class Fixnum
|
35
|
+
include EuroConversion
|
36
|
+
end
|
37
|
+
|
38
|
+
class Rational
|
39
|
+
include EuroConversion
|
40
|
+
end
|
41
|
+
|
42
|
+
class Float
|
43
|
+
include EuroConversion
|
44
|
+
end
|
3
45
|
|
4
46
|
module AsciiMixins
|
5
47
|
|
@@ -48,6 +90,7 @@ module AsciiMixins
|
|
48
90
|
end
|
49
91
|
|
50
92
|
row << caterers_string(project) if hash[:caterers] and project.data[:hours][:caterers]
|
93
|
+
row << wages_string(project) if hash[:wages] and project.data[:hours][:caterers]
|
51
94
|
|
52
95
|
row << project.blockers(:archive) if hash[:blockers]
|
53
96
|
if hash[:details]
|
@@ -65,7 +108,7 @@ module AsciiMixins
|
|
65
108
|
puts table
|
66
109
|
end
|
67
110
|
|
68
|
-
def print_row_simple(project,hash)
|
111
|
+
def print_row_simple(project,hash)
|
69
112
|
row = [
|
70
113
|
project.pretty_name,
|
71
114
|
project.data[:manager],
|
@@ -140,6 +183,12 @@ module AsciiMixins
|
|
140
183
|
data[:hours][:caterers].map{|name, hours| "#{name} (#{hours})" if hours > 0 }.join join if data[:hours][:caterers]
|
141
184
|
end
|
142
185
|
|
186
|
+
def wages_string project, join = ", "
|
187
|
+
data = project.data
|
188
|
+
salary = data[:hours][:salary]
|
189
|
+
data[:hours][:caterers].map{|name, hours| "#{name} (#{salary* hours})" if hours > 0 }.join join if data[:hours][:caterers]
|
190
|
+
end
|
191
|
+
|
143
192
|
#takes an array of invoices (@plumber.working_projects)
|
144
193
|
def print_project_list_csv(projects)
|
145
194
|
header = [
|
@@ -254,7 +303,7 @@ module AsciiMixins
|
|
254
303
|
## hand path to default programm
|
255
304
|
def open_file path
|
256
305
|
unless path.class == String and File.exists? path
|
257
|
-
$logger.error "Cannot open #{path}", :both
|
306
|
+
$logger.error "Cannot open #{path}", :both
|
258
307
|
return false
|
259
308
|
end
|
260
309
|
opener = $SETTINGS.opener
|
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.
|
4
|
+
version: 2.5.10
|
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-04-
|
11
|
+
date: 2015-04-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -127,19 +127,19 @@ dependencies:
|
|
127
127
|
- !ruby/object:Gem::Version
|
128
128
|
version: 0.0.1
|
129
129
|
- !ruby/object:Gem::Dependency
|
130
|
-
name:
|
130
|
+
name: money
|
131
131
|
requirement: !ruby/object:Gem::Requirement
|
132
132
|
requirements:
|
133
133
|
- - "~>"
|
134
134
|
- !ruby/object:Gem::Version
|
135
|
-
version:
|
135
|
+
version: 6.5.1
|
136
136
|
type: :runtime
|
137
137
|
prerelease: false
|
138
138
|
version_requirements: !ruby/object:Gem::Requirement
|
139
139
|
requirements:
|
140
140
|
- - "~>"
|
141
141
|
- !ruby/object:Gem::Version
|
142
|
-
version:
|
142
|
+
version: 6.5.1
|
143
143
|
- !ruby/object:Gem::Dependency
|
144
144
|
name: hash-graft
|
145
145
|
requirement: !ruby/object:Gem::Requirement
|
@@ -186,20 +186,20 @@ dependencies:
|
|
186
186
|
requirements:
|
187
187
|
- - "~>"
|
188
188
|
- !ruby/object:Gem::Version
|
189
|
-
version: '0
|
189
|
+
version: '1.0'
|
190
190
|
- - ">="
|
191
191
|
- !ruby/object:Gem::Version
|
192
|
-
version: 0.
|
192
|
+
version: 1.0.0
|
193
193
|
type: :runtime
|
194
194
|
prerelease: false
|
195
195
|
version_requirements: !ruby/object:Gem::Requirement
|
196
196
|
requirements:
|
197
197
|
- - "~>"
|
198
198
|
- !ruby/object:Gem::Version
|
199
|
-
version: '0
|
199
|
+
version: '1.0'
|
200
200
|
- - ">="
|
201
201
|
- !ruby/object:Gem::Version
|
202
|
-
version: 0.
|
202
|
+
version: 1.0.0
|
203
203
|
- !ruby/object:Gem::Dependency
|
204
204
|
name: hashr
|
205
205
|
requirement: !ruby/object:Gem::Requirement
|