lucabook 0.2.21 → 0.2.22

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
  SHA256:
3
- metadata.gz: 3f7366698bee6b770fbae39f8fe650e1f460b04dec25c8036c84013f970adaa3
4
- data.tar.gz: 8ecbf412b31f001f0cfa2de27ceb879463d17f28e3db552770866b44c0b73114
3
+ metadata.gz: 4755b2574729e35ae914dd92338ed007df2e1158d49c613613cac3b42423c6ee
4
+ data.tar.gz: a559a270322897b10b6dae569102f028004221431300debe19f3d0e5ae6432fe
5
5
  SHA512:
6
- metadata.gz: e30fabd50119ad470c90512bcf066b3992b5df2d67139f437a5f4336d73c843fb65dab2a70b5914c190155de68f82ec722840e0f056079061634f77bb5da4964
7
- data.tar.gz: 3e8775200e05f8bfe0923b53690fa5245441ea4d71768246a7309ee503294d847a466e82da85568d3071f47eccd4f9783a79199b4d4eb630c961de84488a31ed
6
+ metadata.gz: 34b28c364e41ddecf9296ef39130897f03228e0bb0184241e0a7fce4349d41b14ff0ea72318154eb0bfa5e8fdac401783851c61e34e3419620eac6ab12cf6b05
7
+ data.tar.gz: 1bbd862143cc37ba7c459a6d3fae832bbdad744b1db6afc3956175fa97660a1decf8a778c6c40c3e276dd35272ed363f5d9e575ce555b73a368cf2ef8173fcbf
@@ -31,7 +31,7 @@ class LucaCmd
31
31
  if params['code']
32
32
  render(LucaBook::State.by_code(params['code'], *args), params)
33
33
  else
34
- render(LucaBook::State.term(*args).stats(params[:level]), params)
34
+ render(LucaBook::State.range(*args).stats(params[:level]), params)
35
35
  end
36
36
  end
37
37
  end
@@ -41,13 +41,13 @@ class LucaCmd
41
41
  level = params[:level] || 3
42
42
  legal = params[:legal] || false
43
43
  args = gen_range(params[:n] || 1) if args.empty?
44
- render(LucaBook::State.term(*args).bs(level, legal: legal), params)
44
+ render(LucaBook::State.range(*args).bs(level, legal: legal), params)
45
45
  end
46
46
 
47
47
  def self.profitloss(args, params)
48
48
  level = params[:level] || 2
49
49
  args = gen_range(params[:n]) if args.empty?
50
- render(LucaBook::State.term(*args).pl(level), params)
50
+ render(LucaBook::State.range(*args).pl(level), params)
51
51
  end
52
52
  end
53
53
 
@@ -7,6 +7,83 @@ require 'pathname'
7
7
 
8
8
  module LucaBook
9
9
  class Dict < LucaRecord::Dict
10
+ # Column number settings for CSV/TSV convert
11
+ #
12
+ # :label
13
+ # for double entry data
14
+ # :counter_label
15
+ # must be specified with label
16
+ # :debit_label
17
+ # for double entry data
18
+ # * debit_value
19
+ # :credit_label
20
+ # for double entry data
21
+ # * credit_value
22
+ # :note
23
+ # can be the same column as another label
24
+ #
25
+ # :encoding
26
+ # file encoding
27
+ #
28
+ def csv_config
29
+ {}.tap do |config|
30
+ if @config.dig('label')
31
+ config[:label] = @config['label'].to_i
32
+ if @config.dig('counter_label')
33
+ config[:counter_label] = @config['counter_label']
34
+ config[:type] = 'single'
35
+ end
36
+ elsif @config.dig('debit_label')
37
+ config[:debit_label] = @config['debit_label'].to_i
38
+ if @config.dig('credit_label')
39
+ config[:credit_label] = @config['credit_label'].to_i
40
+ config[:type] = 'double'
41
+ end
42
+ end
43
+ config[:type] ||= 'invalid'
44
+ config[:debit_value] = @config['debit_value'].to_i if @config.dig('debit_value')
45
+ config[:credit_value] = @config['credit_value'].to_i if @config.dig('credit_value')
46
+ config[:note] = @config['note'] if @config.dig('note')
47
+ config[:encoding] = @config['encoding'] if @config.dig('encoding')
48
+
49
+ config[:year] = @config['year'] if @config.dig('year')
50
+ config[:month] = @config['month'] if @config.dig('month')
51
+ config[:day] = @config['day'] if @config.dig('day')
52
+ config[:default_debit] = @config['default_debit'] if @config.dig('default_debit')
53
+ config[:default_credit] = @config['default_credit'] if @config.dig('default_credit')
54
+ end
55
+ end
56
+
57
+ def search(word, default_word = nil, amount = nil)
58
+ res = super(word, default_word, main_key: 'account_label')
59
+ if res.is_a?(Array) && res[0].is_a?(Array)
60
+ filter_amount(res, amount)
61
+ else
62
+ res
63
+ end
64
+ end
65
+
66
+ # Choose setting on Big or small condition.
67
+ #
68
+ def filter_amount(settings, amount = nil)
69
+ return settings[0] if amount.nil?
70
+
71
+ settings.each do |item|
72
+ return item unless item[1].keys.include?(:on_amount)
73
+
74
+ condition = item.dig(1, :on_amount)
75
+ case condition[0]
76
+ when '>'
77
+ return item if amount > BigDecimal(condition[1..])
78
+ when '<'
79
+ return item if amount < BigDecimal(condition[1..])
80
+ else
81
+ return item
82
+ end
83
+ end
84
+ nil
85
+ end
86
+
10
87
  def self.latest_balance
11
88
  dict_dir = Pathname(LucaSupport::Config::Pjdir) / 'data' / 'balance'
12
89
  # TODO: search latest balance dictionary
@@ -4,9 +4,14 @@ require 'date'
4
4
  require 'json'
5
5
  require 'luca_book'
6
6
  require 'luca_support'
7
- #require 'luca_book/dict'
8
7
  require 'luca_record'
9
8
 
9
+ begin
10
+ require "luca_book/import_#{LucaSupport::CONFIG['country']}"
11
+ rescue LoadError => e
12
+ e.message
13
+ end
14
+
10
15
  module LucaBook
11
16
  class Import
12
17
  DEBIT_DEFAULT = '10XX'
@@ -18,7 +23,7 @@ module LucaBook
18
23
  @target_file = path
19
24
  # TODO: yaml need to be configurable
20
25
  @dict_name = dict
21
- @dict = LucaRecord::Dict.new("import-#{dict}.yaml")
26
+ @dict = LucaBook::Dict.new("import-#{dict}.yaml")
22
27
  @code_map = LucaRecord::Dict.reverse(LucaRecord::Dict.load('base.tsv'))
23
28
  @config = @dict.csv_config if dict
24
29
  end
@@ -45,8 +50,6 @@ module LucaBook
45
50
  #
46
51
  def self.import_json(io)
47
52
  JSON.parse(io).each do |d|
48
- validate(d)
49
-
50
53
  code_map = LucaRecord::Dict.reverse(LucaRecord::Dict.load('base.tsv'))
51
54
  d['debit'].each { |h| h['code'] = code_map.dig(h['label']) || DEBIT_DEFAULT }
52
55
  d['credit'].each { |h| h['code'] = code_map.dig(h['label']) || CREDIT_DEFAULT }
@@ -67,46 +70,39 @@ module LucaBook
67
70
  end
68
71
  end
69
72
 
70
- def self.validate(obj)
71
- raise 'NoDateKey' unless obj.key?('date')
72
- raise 'NoDebitKey' unless obj.key?('debit')
73
- raise 'NoDebitValue' if obj['debit'].empty?
74
- raise 'NoCreditKey' unless obj.key?('credit')
75
- raise 'NoCreditValue' if obj['credit'].empty?
76
- end
77
-
78
73
  private
79
74
 
80
- #
81
75
  # convert single entry data
82
76
  #
83
77
  def parse_single(row)
84
- value = row.dig(@config[:credit_value])&.empty? ? row[@config[:debit_value]] : row[@config[:credit_value]]
78
+ if (row.dig(@config[:credit_value]) || []).empty?
79
+ value = BigDecimal(row[@config[:debit_value]])
80
+ debit = true
81
+ else
82
+ value = BigDecimal(row[@config[:credit_value]])
83
+ end
84
+ default_label = debit ? @config.dig(:default_debit) : @config.dig(:default_credit)
85
+ code, options = search_code(row[@config[:label]], default_label, value)
86
+ counter_code = @code_map.dig(@config[:counter_label])
87
+ if respond_to? :tax_extension
88
+ data, data_c = tax_extension(code, counter_code, value, options) if options
89
+ end
90
+ data ||= [{ 'code' => code, 'value' => value }]
91
+ data_c ||= [{ 'code' => counter_code, 'value' => value }]
85
92
  {}.tap do |d|
86
93
  d['date'] = parse_date(row)
87
- if row.dig(@config[:credit_value])&.empty?
88
- d['debit'] = [
89
- { 'code' => search_code(row[@config[:label]], @config.dig(:default_debit)) || DEBIT_DEFAULT }
90
- ]
91
- d['credit'] = [
92
- { 'code' => @code_map.dig(@config[:counter_label]) }
93
- ]
94
+ if debit
95
+ d['debit'] = data
96
+ d['credit'] = data_c
94
97
  else
95
- d['debit'] = [
96
- { 'code' => @code_map.dig(@config[:counter_label]) }
97
- ]
98
- d['credit'] = [
99
- { 'code' => search_code(row[@config[:label]], @config.dig(:default_credit)) || CREDIT_DEFAULT }
100
- ]
98
+ d['debit'] = data_c
99
+ d['credit'] = data
101
100
  end
102
- d['debit'][0]['value'] = value
103
- d['credit'][0]['value'] = value
104
101
  d['note'] = Array(@config[:note]).map{ |col| row[col] }.join(' ')
105
102
  d['x-editor'] = "LucaBook::Import/#{@dict_name}"
106
103
  end
107
104
  end
108
105
 
109
- #
110
106
  # convert double entry data
111
107
  #
112
108
  def parse_double(row)
@@ -125,8 +121,9 @@ module LucaBook
125
121
  end
126
122
  end
127
123
 
128
- def search_code(label, default_label)
129
- @code_map.dig(@dict.search(label, default_label))
124
+ def search_code(label, default_label, amount = nil)
125
+ label, options = @dict.search(label, default_label, amount)
126
+ [@code_map.dig(label), options]
130
127
  end
131
128
 
132
129
  def parse_date(row)
@@ -0,0 +1,83 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'date'
4
+ require 'luca_book'
5
+ require 'luca_support'
6
+
7
+ module LucaBook
8
+ class Import
9
+ # TODO: need to be separated into pluggable l10n module.
10
+ # TODO: gensen rate >1m yen.
11
+ # TODO: gensen & consumption `round()` rules need to be confirmed.
12
+ # Profit or Loss account should be specified as code1.
13
+ #
14
+ def tax_extension(code1, code2, amount, options)
15
+ return nil if options.nil? || options[:tax_options].nil?
16
+ return nil if !options[:tax_options].include?('jp-gensen') && !options[:tax_options].include?('jp-consumption')
17
+
18
+ gensen_rate = BigDecimal('0.1021')
19
+ consumption_rate = BigDecimal('0.1')
20
+ gensen_code = @code_map.dig(options[:gensen_label]) || @code_map.dig('預り金')
21
+ gensen_idx = /^[5-8B-G]/.match(code1) ? 1 : 0
22
+ consumption_idx = /^[A-G]/.match(code1) ? 0 : 1
23
+ consumption_code = @code_map.dig(options[:consumption_label])
24
+ consumption_code ||= /^[A]/.match(code1) ? @code_map.dig('仮受消費税等') : @code_map.dig('仮払消費税等')
25
+ if options[:tax_options].include?('jp-gensen') && options[:tax_options].include?('jp-consumption')
26
+ paid_rate = BigDecimal('1') + consumption_rate - gensen_rate
27
+ gensen_amount = (amount / paid_rate * gensen_rate).round
28
+ consumption_amount = (amount / paid_rate * consumption_rate).round
29
+ [].tap do |res|
30
+ res << [].tap do |res1|
31
+ amount1 = amount
32
+ amount1 -= consumption_amount if consumption_idx == 0
33
+ amount1 += gensen_amount if gensen_idx == 1
34
+ res1 << { 'code' => code1, 'value' => amount1 }
35
+ res1 << { 'code' => consumption_code, 'value' => consumption_amount } if consumption_idx == 0
36
+ res1 << { 'code' => gensen_code, 'value' => gensen_amount } if gensen_idx == 0
37
+ end
38
+ res << [].tap do |res2|
39
+ amount2 = amount
40
+ amount2 -= consumption_amount if consumption_idx == 1
41
+ amount2 += gensen_amount if gensen_idx == 0
42
+ res2 << { 'code' => code2, 'value' => amount2 }
43
+ res2 << { 'code' => consumption_code, 'value' => consumption_amount } if consumption_idx == 1
44
+ res2 << { 'code' => gensen_code, 'value' => gensen_amount } if gensen_idx == 1
45
+ end
46
+ end
47
+ elsif options[:tax_options].include?('jp-gensen')
48
+ paid_rate = BigDecimal('1') - gensen_rate
49
+ gensen_amount = (amount / paid_rate * gensen_rate).round
50
+ [].tap do |res|
51
+ res << [].tap do |res1|
52
+ amount1 = amount
53
+ amount1 += gensen_amount if gensen_idx == 1
54
+ res1 << { 'code' => code, 'value' => amount1 }
55
+ res1 << { 'code' => gensen_code, 'value' => gensen_amount } if gensen_idx == 0
56
+ end
57
+ res << [].tap do |res2|
58
+ amount2 = amount
59
+ amount2 += gensen_amount if gensen_idx == 0
60
+ mount2 ||= amount
61
+ res2 << { 'code' => code2, 'value' => amount2 }
62
+ res2 << { 'code' => gensen_code, 'value' => gensen_amount } if gensen_idx == 1
63
+ end
64
+ end
65
+ elsif options[:tax_options].include?('jp-consumption')
66
+ paid_rate = BigDecimal('1') + consumption_rate - gensen_rate
67
+ consumption_amount = (amount / paid_rate * consumption_rate).round
68
+ res << [].tap do |res1|
69
+ amount1 = amount
70
+ amount1 -= consumption_amount if consumption_idx == 0
71
+ res1 << { 'code' => code1, 'value' => amount1 }
72
+ res1 << { 'code' => consumption_code, 'value' => consumption_amount } if consumption_idx == 0
73
+ end
74
+ res << [].tap do |res2|
75
+ amount2 = amount
76
+ amount2 -= consumption_amount if consumption_idx == 1
77
+ res2 << { 'code' => code2, 'value' => amount2 }
78
+ res2 << { 'code' => consumption_code, 'value' => consumption_amount } if consumption_idx == 1
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
@@ -13,6 +13,7 @@ module LucaBook
13
13
  # create journal from hash
14
14
  #
15
15
  def self.create(d)
16
+ validate(d)
16
17
  date = Date.parse(d['date'])
17
18
 
18
19
  debit_amount = LucaSupport::Code.decimalize(serialize_on_key(d['debit'], 'value'))
@@ -52,6 +53,22 @@ module LucaBook
52
53
  end
53
54
  end
54
55
 
56
+ def self.validate(obj)
57
+ raise 'NoDateKey' unless obj.key?('date')
58
+ raise 'NoDebitKey' unless obj.key?('debit')
59
+ raise 'NoCreditKey' unless obj.key?('credit')
60
+ debit_codes = serialize_on_key(obj['debit'], 'code').compact
61
+ debit_values = serialize_on_key(obj['debit'], 'value').compact
62
+ raise 'NoDebitCode' if debit_codes.empty?
63
+ raise 'NoDebitValue' if debit_values.empty?
64
+ raise 'UnmatchDebit' if debit_codes.length != debit_values.length
65
+ credit_codes = serialize_on_key(obj['credit'], 'code').compact
66
+ credit_values = serialize_on_key(obj['credit'], 'value').compact
67
+ raise 'NoCreditCode' if credit_codes.empty?
68
+ raise 'NoCreditValue' if credit_values.empty?
69
+ raise 'UnmatchCredit' if credit_codes.length != credit_values.length
70
+ end
71
+
55
72
  # collect values on specified key
56
73
  #
57
74
  def self.serialize_on_key(array_of_hash, key)
@@ -74,10 +74,6 @@ module LucaBook
74
74
  end
75
75
  end
76
76
 
77
- def to_yaml
78
- YAML.dump(LucaSupport::Code.readable(@data)).tap { |data| puts data }
79
- end
80
-
81
77
  private
82
78
 
83
79
  def set_balance
@@ -25,21 +25,7 @@ module LucaBook
25
25
  @start_balance = set_balance
26
26
  end
27
27
 
28
- # TODO: not compatible with LucaRecord::Base.open_records
29
- def search_tag(code)
30
- count = 0
31
- Dir.children(LucaSupport::Config::Pjdir).sort.each do |dir|
32
- next if ! FileTest.directory?(LucaSupport::Config::Pjdir+dir)
33
-
34
- open_records(datadir, dir, 3) do |row, i|
35
- next if i == 2
36
- count += 1 if row.include?(code)
37
- end
38
- end
39
- puts "#{code}: #{count}"
40
- end
41
-
42
- def self.term(from_year, from_month, to_year = from_year, to_month = from_month)
28
+ def self.range(from_year, from_month, to_year = from_year, to_month = from_month)
43
29
  date = Date.new(from_year.to_i, from_month.to_i, -1)
44
30
  last_date = Date.new(to_year.to_i, to_month.to_i, -1)
45
31
  raise 'invalid term specified' if date > last_date
@@ -64,7 +50,7 @@ module LucaBook
64
50
  reports = [].tap do |r|
65
51
  while date <= last_date do
66
52
  diff = {}.tap do |h|
67
- g = gross(date.year, date.month, code)
53
+ g = gross(date.year, date.month, code: code)
68
54
  sum = g.dig(:debit).nil? ? BigDecimal('0') : Util.calc_diff(g[:debit], code)
69
55
  sum -= g.dig(:credit).nil? ? BigDecimal('0') : Util.calc_diff(g[:credit], code)
70
56
  h['code'] = code
@@ -80,22 +66,9 @@ module LucaBook
80
66
  date = Date.new(date.next_month.year, date.next_month.month, -1)
81
67
  end
82
68
  end
83
- #YAML.dump(LucaSupport::Code.readable(reports)) #.tap{ |data| puts data }
84
- #new(reports, counts, date: Date.new(from_year.to_i, from_month.to_i, -1))
85
69
  LucaSupport::Code.readable(reports)
86
70
  end
87
71
 
88
- def records_with_balance(year, month, code, balance)
89
- @book.search(year, month, nil, code).each do |h|
90
- balance += Util.calc_diff(Util.amount_by_code(h[:debit], code), code) - Util.calc_diff(Util.amount_by_code(h[:credit], code), code)
91
- h[:balance] = balance
92
- end
93
- end
94
-
95
- def to_yaml
96
- YAML.dump(readable(code2label)).tap { |data| puts data }
97
- end
98
-
99
72
  def code2label
100
73
  @statement ||= @data
101
74
  @statement.map do |report|
@@ -201,14 +174,11 @@ module LucaBook
201
174
  return nil if date > last_date
202
175
 
203
176
  {}.tap do |res|
204
- while date <= last_date do
205
- diff, _count = net(date.year, date.month)
206
- diff.each do |k, v|
207
- next if /^[_]/.match(k)
177
+ diff, _count = net(date.year, date.month, last_date.year, last_date.month)
178
+ diff.each do |k, v|
179
+ next if /^[_]/.match(k)
208
180
 
209
- res[k] = res[k].nil? ? v : res[k] + v
210
- end
211
- date = date.next_month
181
+ res[k] = res[k].nil? ? v : res[k] + v
212
182
  end
213
183
  end
214
184
  end
@@ -299,15 +269,17 @@ module LucaBook
299
269
 
300
270
  # for assert purpose
301
271
  #
302
- def self.gross(year, month = nil, code = nil, date_range = nil, rows = 4)
272
+ def self.gross(start_year, start_month, end_year = nil, end_month = nil, code: nil, date_range: nil, rows: 4)
303
273
  if ! date_range.nil?
304
274
  raise if date_range.class != Range
305
275
  # TODO: date based range search
306
276
  end
307
277
 
278
+ end_year ||= start_year
279
+ end_month ||= start_month
308
280
  sum = { debit: {}, credit: {}, debit_count: {}, credit_count: {} }
309
281
  idx_memo = []
310
- search(year, month, nil, code) do |f, _path|
282
+ term(start_year, start_month, end_year, end_month, code) do |f, _path|
311
283
  CSV.new(f, headers: false, col_sep: "\t", encoding: 'UTF-8')
312
284
  .each_with_index do |row, i|
313
285
  break if i >= rows
@@ -357,8 +329,8 @@ module LucaBook
357
329
 
358
330
  # netting vouchers in specified term
359
331
  #
360
- def self.net(year, month = nil, code = nil, date_range = nil)
361
- g = gross(year, month, code, date_range)
332
+ def self.net(start_year, start_month, end_year = nil, end_month = nil, code: nil, date_range: nil)
333
+ g = gross(start_year, start_month, end_year, end_month, code: code, date_range: date_range)
362
334
  idx = (g[:debit].keys + g[:credit].keys).uniq.sort
363
335
  count = {}
364
336
  diff = {}.tap do |sum|
@@ -371,14 +343,6 @@ module LucaBook
371
343
  [diff, count]
372
344
  end
373
345
 
374
- # TODO: obsolete in favor of Dict.latest_balance()
375
- def load_start
376
- file = Pathname(LucaSupport::Config::Pjdir) / 'data' / 'balance' / 'start.tsv'
377
- {}.tap do |dict|
378
- LucaRecord::Dict.load_tsv_dict(file).each { |k, v| h[k] = v[:balance] if !v[:balance].nil? }
379
- end
380
- end
381
-
382
346
  private
383
347
 
384
348
  def legal_items
@@ -1,19 +1,19 @@
1
- code label xbrl_id consumption_tax income_tax
1
+ code label xbrl_id consumption_tax income_tax
2
2
  10 Current Assets
3
3
  10XX UNSETTLED_IMPORT
4
4
  110 Cash and cash equivalents
5
5
  1101 Saving accounts
6
6
  1102 Checking accounts
7
- 111 Cash,us-gaap:Cash
8
- 120 Notes receivable,us-gaap:NotesReceivableGross
9
- 130 Accounts receivable - trade,us-gaap:AccountsReceivableGross
7
+ 111 Cash us-gaap:Cash
8
+ 120 Notes receivable us-gaap:NotesReceivableGross
9
+ 130 Accounts receivable - trade us-gaap:AccountsReceivableGross
10
10
  140 短期貸付金
11
11
  150 未収入金
12
- 160 Inventory,us-gaap:InventoryGross
12
+ 160 Inventory us-gaap:InventoryGross
13
13
  161 商品
14
14
  162 製品
15
- 163 Inventory work in process,us-gaap:InventoryWorkInProcess
16
- 164 Supplies,us-gaap:Supplies
15
+ 163 Inventory work in process us-gaap:InventoryWorkInProcess
16
+ 164 Supplies us-gaap:Supplies
17
17
  180 その他流動資産
18
18
  181 前渡金
19
19
  182 Prepaid expenses
@@ -22,17 +22,17 @@ code label xbrl_id consumption_tax income_tax
22
22
  1D0 Deferred income tax
23
23
  40 Fixed Assets
24
24
  410 Tangible Assets
25
- 411 Buildings,us-gaap:BuildingsAndImprovementsGross
25
+ 411 Buildings us-gaap:BuildingsAndImprovementsGross
26
26
  412 Equipment
27
27
  413 Machinery
28
28
  414 Vehicles
29
29
  415 Tools
30
30
  416 Land
31
- 417 Construction in progress,us-gaap:ConstructionInProgressGross
31
+ 417 Construction in progress us-gaap:ConstructionInProgressGross
32
32
  418 Ships
33
33
  420 Intangible Assets
34
34
  421 Software
35
- 422 Goodwill,us-gaap:Goodwill
35
+ 422 Goodwill us-gaap:Goodwill
36
36
  423 Patents
37
37
  424 借地権
38
38
  425 商標権
@@ -52,10 +52,10 @@ code label xbrl_id consumption_tax income_tax
52
52
  443 社債発行費
53
53
  50 Current Liabilities
54
54
  50XX UNSETTLED_IMPORT
55
- 510 Notes payable,us-gaap:NotesPayable
55
+ 510 Notes payable us-gaap:NotesPayable
56
56
  511 Accounts payable - trade
57
- 512 Short-term borrowings,us-gaap:ShortermBorrowings
58
- 513 Commercial paper,us-gaap:CommercialPaper
57
+ 512 Short-term borrowings us-gaap:ShortermBorrowings
58
+ 513 Commercial paper us-gaap:CommercialPaper
59
59
  514 Accounts payable - other
60
60
  515 Income taxes payable
61
61
  516 未払消費税等
@@ -66,7 +66,7 @@ code label xbrl_id consumption_tax income_tax
66
66
  51B Deferred tax liabilities
67
67
  70 Long-term Liabilities
68
68
  711 Debt securities
69
- 712 Loans payable,us-gaap:LoansPayable
69
+ 712 Loans payable us-gaap:LoansPayable
70
70
  713 退職給付引当金
71
71
  714 Deferred tax liabilities
72
72
  90 Net Assets
@@ -74,7 +74,7 @@ code label xbrl_id consumption_tax income_tax
74
74
  911 Capital stock
75
75
  912 Capital surplus
76
76
  913 Retained earnings
77
- 914 Treasury stock,us-gaap:TreasuryStockValue
77
+ 914 Treasury stock us-gaap:TreasuryStockValue
78
78
  920 評価換算差額等
79
79
  921 有価証券評価差額金
80
80
  922 為替換算調整勘定
@@ -88,29 +88,29 @@ B12 Parts
88
88
  B13 Labor
89
89
  BA Gross profit
90
90
  C0 Operating expenses
91
- C11 Officers Compensation,us-gaap:OfficersCompensation
92
- C12 Salaries,us-gaap:SalariesAndWages
91
+ C11 Officers Compensation us-gaap:OfficersCompensation
92
+ C12 Salaries us-gaap:SalariesAndWages
93
93
  C13 Bonuses
94
94
  C14 役員賞与
95
95
  C15 退職金
96
96
  C16 Legal welfare
97
- C17 Travel,us-gaap:TravelAndEntertainmentExpense
98
- C18 Communication,us-gaap:Communication
99
- C19 Repairs,us-gaap:CostOfPropertyRepairsAndMaintenance
100
- C1A Advertising,us-gaap:AdvertisingExpense
97
+ C17 Travel us-gaap:TravelAndEntertainmentExpense
98
+ C18 Communication us-gaap:Communication
99
+ C19 Repairs us-gaap:CostOfPropertyRepairsAndMaintenance
100
+ C1A Advertising us-gaap:AdvertisingExpense
101
101
  C1B Entertainment
102
102
  C1C Packing-and-freight
103
103
  C1D Welfare
104
104
  C1E Rents
105
105
  C1F Utilities
106
- C1G Supplies,us-gaap:SuppliesExpense
106
+ C1G Supplies us-gaap:SuppliesExpense
107
107
  C1H Insurance
108
108
  C1I Taxes
109
109
  C1J 賃借料
110
110
  C1K Books
111
111
  C1L 貸倒損失
112
112
  C1M 諸会費
113
- C1N Fees and commisions,us-gaap:BankingFeesAndCommisions
113
+ C1N Fees and commisions us-gaap:BankingFeesAndCommisions
114
114
  C1O 外注費
115
115
  C1P Depreciation
116
116
  C1Q Miscellaneous
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module LucaBook
4
- VERSION = '0.2.21'
4
+ VERSION = '0.2.22'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lucabook
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.21
4
+ version: 0.2.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chuma Takahiro
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-11-22 00:00:00.000000000 Z
11
+ date: 2020-11-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lucarecord
@@ -82,6 +82,7 @@ files:
82
82
  - lib/luca_book/console.rb
83
83
  - lib/luca_book/dict.rb
84
84
  - lib/luca_book/import.rb
85
+ - lib/luca_book/import_jp.rb
85
86
  - lib/luca_book/journal.rb
86
87
  - lib/luca_book/list.rb
87
88
  - lib/luca_book/setup.rb