magelex 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +11 -6
- data/bin/magelex +2 -2
- data/bin/magelex_debug +75 -0
- data/lib/magelex/bill_modifier.rb +38 -0
- data/lib/magelex/lexware_account.rb +8 -1
- data/lib/magelex/lexware_bill.rb +35 -26
- data/lib/magelex/lexware_csv.rb +1 -1
- data/lib/magelex/magento_csv.rb +10 -2
- data/lib/magelex/tax_guess.rb +25 -7
- data/lib/magelex/version.rb +1 -1
- data/lib/magelex.rb +7 -4
- data/magelex.gemspec +1 -0
- metadata +19 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: de06fc18a480aa62a7229eb17dd1039513345fd3
|
4
|
+
data.tar.gz: 2c47cad6e86d40495ddd67c32a6533ab5e2d4e77
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 07b259c2f497d0345b89ec13819b6717e2c64293bc212d7fe1a805214270aacf77f80fec7d0478462c2002cfd2a55b81741d6f171a971933aa1e924846873026
|
7
|
+
data.tar.gz: 7efba0085ec0ecfe48693fd2b0e71af54f7f4351769d943338d9bd8e39a2a339af03c9ab7e199b12f5ddd748318300778f5b8ccca1e43a543c78e71be301baea
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
*This README reflects (more or less) the current development state, for documentation of a given version, see the README shipped with that gem (or respective tag on github).*
|
4
4
|
|
5
|
-
Magelex takes Magento data and presents it in a format that Lexware can read.
|
5
|
+
Magelex takes Magento online shop order data and presents it in a format that Lexware can read to model open positions.
|
6
6
|
|
7
7
|
Aim is to manage the cash flow in Lexware.
|
8
8
|
|
@@ -16,7 +16,7 @@ Install it yourself as:
|
|
16
16
|
|
17
17
|
## Assumptions
|
18
18
|
|
19
|
-
Customer accounts are hard coded. Database access necessary for date corrections.
|
19
|
+
Customer accounts are hard coded. Database access is necessary for date corrections (but can be skipped).
|
20
20
|
|
21
21
|
## Usage
|
22
22
|
|
@@ -34,9 +34,9 @@ Call `magelex --help` to get a basic idea:
|
|
34
34
|
--version Show version and exit.
|
35
35
|
|
36
36
|
|
37
|
-
By default, `magelex` will log to `STDERR`,
|
37
|
+
By default, `magelex` will log to `STDERR`, but you can pass the path to a log file.
|
38
38
|
|
39
|
-
It consumes a single file (given as argument, as in `magelex magento_orders.csv`). `magelex` will create a file with same filename in the path `lexware` (can be changed with the `--out-dir`
|
39
|
+
It consumes a single file (given as argument, as in `magelex magento_orders.csv`) or a directory of files. `magelex` will create a file with same filename in the path `lexware` (can be changed with the `--out-dir` option).
|
40
40
|
|
41
41
|
### Configuration
|
42
42
|
|
@@ -48,9 +48,14 @@ If no database queries should be done, invoke with `--skip-db`.
|
|
48
48
|
|
49
49
|
Call `magelex --help` to get a basic idea.
|
50
50
|
|
51
|
-
##
|
51
|
+
## Documentation of process
|
52
52
|
|
53
|
-
|
53
|
+
`bin/magelex` will read in a CSV file with orders exported by magento (`Magelex::MagentoCSV`). In this file, one row accounts for one 'order item'. Items are added up to form a `Magelex::LexwareBill`. Adding Items to a `LexWareBill` collects the brutto values separated by tax. For this, the tax category (0%, 7% or 19%) has to be guessed (`Magelex::TaxGuesser`).
|
54
|
+
|
55
|
+
Result of this processing are a number of `LexwareBill`s.
|
56
|
+
Swiss orders require some special attention, so steps are undertaken to adjust these to reality. Afterwards, the shipping costs can be included.
|
57
|
+
|
58
|
+
Finally the `LexwareBill`s that conform to the rules (`LexwareBill#check`) can be exported to be imported to Lexware (`Magelex::LexwareCSV`).
|
54
59
|
|
55
60
|
## Development
|
56
61
|
|
data/bin/magelex
CHANGED
@@ -37,7 +37,7 @@ optparse = OptionParser.new do |opts|
|
|
37
37
|
end.parse!
|
38
38
|
|
39
39
|
if ARGV.length != 1
|
40
|
-
STDERR.puts "Need
|
40
|
+
STDERR.puts "Need a single argument (directory or file)"
|
41
41
|
exit 1
|
42
42
|
end
|
43
43
|
|
@@ -50,7 +50,7 @@ Magelex.logger.formatter = proc { |severity, datetime, progname, msg|
|
|
50
50
|
}
|
51
51
|
|
52
52
|
def main options
|
53
|
-
Magelex.logger.info("Started")
|
53
|
+
Magelex.logger.info("Started (version #{Magelex::VERSION})")
|
54
54
|
|
55
55
|
Dir.mkdir options[:out_dir] rescue {}
|
56
56
|
outdir = Pathname.new(options[:out_dir]).realpath
|
data/bin/magelex_debug
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "magelex"
|
4
|
+
|
5
|
+
require 'yaml'
|
6
|
+
require 'optparse'
|
7
|
+
require 'terminal-table'
|
8
|
+
|
9
|
+
options = {}
|
10
|
+
|
11
|
+
optparse = OptionParser.new do |opts|
|
12
|
+
opts.banner = "Usage: #{$PROGRAM_NAME} DIR_OR_FILE"
|
13
|
+
opts.separator ""
|
14
|
+
opts.separator "Debug magelex im- and export"
|
15
|
+
opts.separator ""
|
16
|
+
|
17
|
+
opts.on('-v', '--verbose', 'Run verbosely') do |o|
|
18
|
+
options[:verbose] = o
|
19
|
+
end
|
20
|
+
opts.on('-s', '--skip-db', 'Do not update dates from mysql database.') do |o|
|
21
|
+
options[:skipdb] = o
|
22
|
+
end
|
23
|
+
opts.on_tail('--version', 'Show version and exit.') do
|
24
|
+
puts "Magelex #{Magelex::VERSION}"
|
25
|
+
exit 0
|
26
|
+
end
|
27
|
+
opts.on('-h', '--help', 'Show this help and exit.') do
|
28
|
+
puts opts
|
29
|
+
exit 0
|
30
|
+
end
|
31
|
+
end.parse!
|
32
|
+
|
33
|
+
if ARGV.length != 1
|
34
|
+
STDERR.puts "Need an argument (directory or file)"
|
35
|
+
exit 1
|
36
|
+
end
|
37
|
+
|
38
|
+
Magelex.logger = Logger.new(options[:log_file] ? options[:log_file] : STDERR)
|
39
|
+
|
40
|
+
Magelex.logger.level = options[:verbose] ? Logger::DEBUG : Logger::INFO
|
41
|
+
Magelex.logger.datetime_format = "%Y-%m-%d %H:%M:%S"
|
42
|
+
Magelex.logger.formatter = proc { |severity, datetime, progname, msg|
|
43
|
+
"#{severity} - #{datetime} - #{msg}\n"
|
44
|
+
}
|
45
|
+
|
46
|
+
def main options
|
47
|
+
Magelex.logger.info("Started")
|
48
|
+
|
49
|
+
# Import/Read file.
|
50
|
+
bills = Magelex::MagentoCSV.read ARGV[0]
|
51
|
+
bills.each(&:swissify)
|
52
|
+
bills.each(&:process_shipping_costs)
|
53
|
+
bill_rows = bills.map do |bill|
|
54
|
+
[
|
55
|
+
bill.order_nr,
|
56
|
+
bill.swiss? ? 'Y' : 'N',
|
57
|
+
bill.total,
|
58
|
+
"%.3f" %bill.total_0, "%.3f" % bill.total_7, "%.3f" % bill.total_19,
|
59
|
+
"%.3f" % bill.tax_7, "%.3f" % bill.tax_19,
|
60
|
+
"%.3f" % bill.shipping_cost, "%.3f" % bill.check_diff, bill.check ? "Y" : "N"
|
61
|
+
]
|
62
|
+
end
|
63
|
+
|
64
|
+
t = Terminal::Table.new(headings: ["nr", "S?","total_b",
|
65
|
+
"total0", "total7", "total19",
|
66
|
+
"tax7", "tax19",
|
67
|
+
"ship", "diff", "C"],
|
68
|
+
rows: bill_rows)
|
69
|
+
|
70
|
+
puts t
|
71
|
+
puts Magelex::LexwareCSV::render bills
|
72
|
+
Magelex.logger.info("Finished")
|
73
|
+
end
|
74
|
+
|
75
|
+
main options
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Magelex
|
2
|
+
module BillModifier
|
3
|
+
def self.process bill
|
4
|
+
# 'Trick' around with bill
|
5
|
+
swissify bill
|
6
|
+
process_shipping_costs bill
|
7
|
+
adjust_order_number bill
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.process_shipping_costs bill
|
11
|
+
if bill.swiss?
|
12
|
+
bill.total_0 += LexwareBill.floor2(bill.shipping_cost)
|
13
|
+
else
|
14
|
+
bill.tax_19 += bill.shipping_cost * 0.19
|
15
|
+
bill.total_19 += LexwareBill.floor2(bill.shipping_cost * 1.19)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.adjust_order_number bill
|
20
|
+
bill.order_nr.to_s.gsub!(/^e-/, '')
|
21
|
+
end
|
22
|
+
|
23
|
+
# total0 consumes total and resets others, if check passes
|
24
|
+
# shipping costs should be consumed before
|
25
|
+
# this has to be layed out in a graph or documented properly
|
26
|
+
# (what happens when)
|
27
|
+
def self.swissify bill
|
28
|
+
return if !bill.swiss?
|
29
|
+
|
30
|
+
bill.incorrect_tax += (bill.total_19 - bill.total_19 / 1.19)
|
31
|
+
bill.incorrect_tax += (bill.total_7 - bill.total_7 / 1.07)
|
32
|
+
bill.total_0 += (bill.total_19 / 1.19)
|
33
|
+
bill.total_19 = 0
|
34
|
+
bill.total_0 += (bill.total_7 / 1.07)
|
35
|
+
bill.total_7 = 0
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -12,7 +12,8 @@ module Magelex
|
|
12
12
|
10000 + ord * 100
|
13
13
|
end
|
14
14
|
|
15
|
-
#
|
15
|
+
# Get account number for
|
16
|
+
# :incorrect_tax, :total_0, :total_7 or :total_19
|
16
17
|
def self.for(bill, tax_kind)
|
17
18
|
if tax_kind == :total_0
|
18
19
|
return for_0 bill
|
@@ -20,6 +21,8 @@ module Magelex
|
|
20
21
|
return for_7 bill
|
21
22
|
elsif tax_kind == :total_19
|
22
23
|
return for_19 bill
|
24
|
+
elsif tax_kind == :incorrect_tax
|
25
|
+
return for_incorrect_tax bill
|
23
26
|
else
|
24
27
|
raise "unknown tax_kind (#{tax_kind})"
|
25
28
|
end
|
@@ -36,5 +39,9 @@ module Magelex
|
|
36
39
|
def self.for_0 bill
|
37
40
|
'8120'
|
38
41
|
end
|
42
|
+
|
43
|
+
def self.for_incorrect_tax bill
|
44
|
+
'1783'
|
45
|
+
end
|
39
46
|
end
|
40
47
|
end
|
data/lib/magelex/lexware_bill.rb
CHANGED
@@ -7,20 +7,23 @@ module Magelex
|
|
7
7
|
'NL','AT','PL','PT','RO','SI','SK','FI','SE','UK']
|
8
8
|
|
9
9
|
attr_accessor :order_nr, :customer_name, :country_code,
|
10
|
-
:date, :status, :shipping_cost, :total, :total_0, :total_7, :total_19, :has_problems
|
10
|
+
:date, :status, :shipping_cost, :total, :total_0, :total_7, :total_19, :has_problems, :tax_7, :tax_19, :incorrect_tax
|
11
11
|
|
12
12
|
def initialize values={}
|
13
13
|
@total_0, @total_7, @total_19, @total = 0, 0, 0, 0
|
14
14
|
@customer_name = values.delete(:customer_name) || ""
|
15
15
|
@order_nr = values.delete(:order_nr) || nil
|
16
|
-
@date = values.delete(:date)
|
16
|
+
@date = values.delete(:date) || nil
|
17
17
|
@total = values.delete(:total) || 0
|
18
|
-
@total_0 = values.delete(:total_0)
|
19
|
-
@total_7 = values.delete(:total_7)
|
18
|
+
@total_0 = values.delete(:total_0) || 0
|
19
|
+
@total_7 = values.delete(:total_7) || 0
|
20
20
|
@total_19 = values.delete(:total_19) || 0
|
21
|
+
@tax_7 = values.delete(:tax_7) || 0
|
22
|
+
@tax_19 = values.delete(:tax_19) || 0
|
23
|
+
@incorrect_tax = values.delete(:incorrect_tax) || 0
|
21
24
|
@status = values.delete(:status) || nil
|
22
25
|
@shipping_cost = values.delete(:shipping_cost) || nil
|
23
|
-
@country_code = values.delete(:country_code)
|
26
|
+
@country_code = values.delete(:country_code) || nil
|
24
27
|
@has_problems = false
|
25
28
|
if !values.empty?
|
26
29
|
raise "Unknown values for bill: #{values.inspect}"
|
@@ -31,17 +34,35 @@ module Magelex
|
|
31
34
|
@country_code == 'CH'
|
32
35
|
end
|
33
36
|
|
37
|
+
# Add item values to corresponding total_ and tax_ attributes
|
38
|
+
# depending on discount, include or exclude taxes.
|
34
39
|
def add_item amount, tax, name, discount=0
|
35
40
|
begin
|
36
41
|
case TaxGuess.guess(amount, tax)
|
37
42
|
when :tax0
|
38
|
-
@total_0 += amount.round(2)
|
43
|
+
@total_0 += amount.round(2)
|
39
44
|
when :tax7
|
40
|
-
|
45
|
+
if discount != 0
|
46
|
+
@total_7 += (amount.round(2) * 1.07)
|
47
|
+
else
|
48
|
+
@total_7 += amount.round(2)
|
49
|
+
end
|
50
|
+
@tax_7 += tax
|
41
51
|
when :tax19
|
42
|
-
|
52
|
+
if discount != 0
|
53
|
+
@total_19 += (amount.round(2) * 1.18)
|
54
|
+
else
|
55
|
+
@total_19 += amount.round(2)
|
56
|
+
end
|
57
|
+
if swiss?
|
58
|
+
Magelex::logger.info("19% Tax Item in swiss order: #{@order_nr}: #{name}")
|
59
|
+
end
|
60
|
+
@tax_19 += tax
|
61
|
+
when :empty_item
|
62
|
+
Magelex::logger.debug("Empty item: '#{name}' #{amount}, tax: #{tax}")
|
43
63
|
end
|
44
|
-
rescue
|
64
|
+
rescue RuntimeError
|
65
|
+
Magelex::logger.warn("Unguessable tax (#{@order_nr}: #{name} #{amount}/#{tax})")
|
45
66
|
@has_problems = true
|
46
67
|
end
|
47
68
|
end
|
@@ -54,33 +75,21 @@ module Magelex
|
|
54
75
|
@@EU_CODES.include? @country_code
|
55
76
|
end
|
56
77
|
|
78
|
+
def check_diff
|
79
|
+
@total.round(2) - (@total_0.round(2) + @total_7.round(2) + @total_19.round(2) + @incorrect_tax.round(2)).round(2)
|
80
|
+
end
|
81
|
+
|
57
82
|
def check
|
58
|
-
@has_problems == false && @total > 0 &&
|
83
|
+
@has_problems == false && @total > 0 && check_diff == 0
|
59
84
|
end
|
60
85
|
|
61
86
|
def self.floor2 value
|
62
87
|
(value * 100).to_i / 100.0
|
63
88
|
end
|
64
|
-
|
65
|
-
def consume_shipping_cost
|
66
|
-
if swiss?
|
67
|
-
@total_0 += LexwareBill.floor2(@shipping_cost)
|
68
|
-
else
|
69
|
-
@total_19 += LexwareBill.floor2(@shipping_cost * 1.19)
|
70
|
-
end
|
71
|
-
@shipping_cost = 0
|
72
89
|
end
|
73
90
|
|
74
91
|
def complete?
|
75
92
|
@status == "complete"
|
76
93
|
end
|
77
|
-
|
78
|
-
def swissify
|
79
|
-
return if !swiss?
|
80
|
-
@total_0 += @total_19
|
81
|
-
@total_19 = 0
|
82
|
-
@total_0 += @total_7
|
83
|
-
@total_7 = 0
|
84
|
-
end
|
85
94
|
end
|
86
95
|
end
|
data/lib/magelex/lexware_csv.rb
CHANGED
@@ -16,7 +16,7 @@ module Magelex
|
|
16
16
|
Magelex::AccountNumber.for_customer(bill),
|
17
17
|
0]
|
18
18
|
# subs
|
19
|
-
[:total_0, :total_7, :total_19].each do |part|
|
19
|
+
[:total_0, :total_7, :total_19, :incorrect_tax].each do |part|
|
20
20
|
if (amount = bill.send(part)) != 0
|
21
21
|
rows << [
|
22
22
|
bill.date.strftime("%d.%m.%Y"),
|
data/lib/magelex/magento_csv.rb
CHANGED
@@ -3,7 +3,7 @@ require 'csv'
|
|
3
3
|
module Magelex
|
4
4
|
module MagentoCSV
|
5
5
|
MONEY_FIELDS = ['Order Shipping', 'Order Grand Total',
|
6
|
-
'Item Total', 'Item Tax']
|
6
|
+
'Item Total', 'Item Tax', 'Item Discount']
|
7
7
|
|
8
8
|
CSV::Converters[:german_money_amount] = lambda do |value, info|
|
9
9
|
if MONEY_FIELDS.include? info[:header]
|
@@ -39,6 +39,13 @@ module Magelex
|
|
39
39
|
bill.status = row['Order Status']
|
40
40
|
|
41
41
|
bill.shipping_cost = row['Order Shipping']
|
42
|
+
if bill.shipping_cost == 12.6
|
43
|
+
Magelex::logger.info "Correcting shipping cost of #{bill.order_nr} (12.6 -> 15 / 1.19 €)"
|
44
|
+
bill.shipping_cost = 15 / 1.19
|
45
|
+
elsif bill.shipping_cost == 4.15
|
46
|
+
Magelex::logger.info "Correcting shipping cost of #{bill.order_nr} (4.15 -> 4.95 / 1.19 €)"
|
47
|
+
bill.shipping_cost = 4.95 / 1.19
|
48
|
+
end
|
42
49
|
bill.total = row['Order Grand Total']
|
43
50
|
bill
|
44
51
|
end
|
@@ -57,7 +64,8 @@ module Magelex
|
|
57
64
|
|
58
65
|
current_bill.add_item(row['Item Total'],
|
59
66
|
row['Item Tax'],
|
60
|
-
row['Item Name']
|
67
|
+
row['Item Name'],
|
68
|
+
row['Item Discount'])
|
61
69
|
|
62
70
|
if !bills.include? (current_bill)
|
63
71
|
bills << current_bill
|
data/lib/magelex/tax_guess.rb
CHANGED
@@ -1,16 +1,34 @@
|
|
1
1
|
module Magelex
|
2
2
|
module TaxGuess
|
3
|
+
# Guesses the tax category.
|
4
|
+
# Question is: how many percent of total is tax_amount.
|
3
5
|
def self.guess(total, tax_amount)
|
4
|
-
if tax_amount == 0
|
5
|
-
:
|
6
|
-
|
7
|
-
|
8
|
-
elsif (total - total/1.18) <= tax_amount && (total - total/1.20) >= tax_amount
|
9
|
-
:tax19
|
10
|
-
else
|
6
|
+
if total == 0 && tax_amount == 0
|
7
|
+
return :empty_item
|
8
|
+
end
|
9
|
+
if total == 0
|
11
10
|
raise "TaxGuess: Cannot guess tax of "\
|
12
11
|
"#{total}/#{tax_amount} (#{total - total/tax_amount})"
|
13
12
|
end
|
13
|
+
|
14
|
+
# net: netto, gro: gross/brutto
|
15
|
+
# gro_price = net_price + taxes ## (1: net_price = gro_price - taxes)
|
16
|
+
# gro_price = net_price + net_price * tax_perce
|
17
|
+
# tax_perce = (gro_price - net_price) / net_price
|
18
|
+
# tax_perce = gro_price / net_price - 1 ## (see 1)
|
19
|
+
percentage = total.to_f / (total - tax_amount) - 1
|
20
|
+
|
21
|
+
case percentage
|
22
|
+
when -0.01..0.01
|
23
|
+
:tax0
|
24
|
+
when 0.06..0.09
|
25
|
+
:tax7
|
26
|
+
when 0.16..0.20
|
27
|
+
:tax19
|
28
|
+
else
|
29
|
+
raise "TaxGuess: Cannot guess tax of "\
|
30
|
+
"#{total}/#{tax_amount} (#{total - total/tax_amount}) - #{tax_amount/total if total != 0}"
|
31
|
+
end
|
14
32
|
end
|
15
33
|
end
|
16
34
|
end
|
data/lib/magelex/version.rb
CHANGED
data/lib/magelex.rb
CHANGED
@@ -5,12 +5,13 @@ require 'magelex/lexware_csv'
|
|
5
5
|
require 'magelex/tax_guess'
|
6
6
|
require 'magelex/lexware_account'
|
7
7
|
require 'magelex/magento_mysql'
|
8
|
+
require 'magelex/bill_modifier'
|
8
9
|
|
9
10
|
require 'logger'
|
10
11
|
|
11
12
|
module Magelex
|
12
13
|
def self.logger
|
13
|
-
@logger ||= Logger.new
|
14
|
+
@logger ||= Logger.new STDERR
|
14
15
|
end
|
15
16
|
def self.logger= logger
|
16
17
|
@logger = logger
|
@@ -24,15 +25,17 @@ module Magelex
|
|
24
25
|
if !bill.complete?
|
25
26
|
Magelex.logger.info("Skip order #{bill.order_nr} (incomplete: #{bill.status})")
|
26
27
|
else # complete!
|
27
|
-
bill
|
28
|
-
bill.swissify
|
28
|
+
Magelex::BillModifier.process bill
|
29
29
|
if !bill.check
|
30
|
-
Magelex.logger.info("Skip order #{bill.order_nr}#{bill.swiss? ? ' (swiss)' : ''}")
|
30
|
+
Magelex.logger.info("Skip order #{bill.order_nr}#{bill.swiss? ? ' (swiss)' : ''} #{bill.has_problems ? ' (broken item)': '' }")
|
31
31
|
Magelex.logger.info(" (totals do not match #{bill.total} != "\
|
32
32
|
"(0: #{bill.total_0} + 7: #{bill.total_7} "\
|
33
33
|
"+ 19: #{bill.total_19} "\
|
34
34
|
"= #{bill.total_0 + bill.total_7 + bill.total_19})")
|
35
35
|
else
|
36
|
+
if bill.swiss?
|
37
|
+
Magelex.logger.info("#{bill.order_nr}: swiss")
|
38
|
+
end
|
36
39
|
Magelex.logger.debug("Handle #{bill.order_nr}")
|
37
40
|
bills_export << bill
|
38
41
|
end
|
data/magelex.gemspec
CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_dependency 'mysql2', '~> 0.4'
|
22
|
+
spec.add_dependency 'terminal-table', '~> 1.5'
|
22
23
|
|
23
24
|
spec.add_development_dependency "bundler", "~> 1.11"
|
24
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: magelex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Wolfsteller
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mysql2
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0.4'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: terminal-table
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.5'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.5'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -71,6 +85,7 @@ email:
|
|
71
85
|
- felix.wolfsteller@gmail.com
|
72
86
|
executables:
|
73
87
|
- magelex
|
88
|
+
- magelex_debug
|
74
89
|
extensions: []
|
75
90
|
extra_rdoc_files: []
|
76
91
|
files:
|
@@ -81,7 +96,9 @@ files:
|
|
81
96
|
- README.md
|
82
97
|
- Rakefile
|
83
98
|
- bin/magelex
|
99
|
+
- bin/magelex_debug
|
84
100
|
- lib/magelex.rb
|
101
|
+
- lib/magelex/bill_modifier.rb
|
85
102
|
- lib/magelex/lexware_account.rb
|
86
103
|
- lib/magelex/lexware_bill.rb
|
87
104
|
- lib/magelex/lexware_csv.rb
|