lucabook 0.2.32 → 0.3.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 909f1f8b40a8f1ae8eda824b1d6ae4224e3bb13134a38be105c03fcbe7cd8368
4
- data.tar.gz: 3e749783a1883ab31c3755a10e8f0e5133386194b933692b6305ecabbfa12e41
3
+ metadata.gz: b14674db9c7c07b4e523d4603f98e745ab680951822041666e7d957409aabfaf
4
+ data.tar.gz: 1a62eb8f39388727ab65bfa1f5242ac84a8c482a051715e944215d126b7bf93f
5
5
  SHA512:
6
- metadata.gz: 5e3edf5fa76a523cb175a4e0120a212135c1807ee5670fca7a816eac02074990e165ea047a9969aab956eef606a8fbe6fa30e03c3de43508dbea86ef105a112d
7
- data.tar.gz: 8ac22d5b5b3d0cd6a92d0ec7573e3847a72a7cf9e57b23415942702e4affd7756c530dd1417a883759f279bc424f2bee44b1b1564e6258eb99b047e6157841d0
6
+ metadata.gz: 6f5005cc3efbc02170c73418e760a5ac39b87480fbdc78caf5cc5f2604ab009ea8cf6437a90473a675c8716e77de2d6eefeb77b0a7ee0de3337016ee78d7e83d
7
+ data.tar.gz: ed2ef276ea1e82f8c074fcde7ab2a9ee7fe29ea952098e58ac486f65b8ddc22a1e87218f0ecc6cee19e56832fd1acd14f7945adfefa6931bf93db7ec0532adc4
data/exe/luca-book CHANGED
@@ -56,8 +56,23 @@ class LucaCmd
56
56
  def self.xbrl(args, params)
57
57
  level = params[:level] || 3
58
58
  legal = params[:legal] || false
59
- args = gen_range(params[:n] || 1) if args.empty?
60
- LucaBook::State.range(*args).render_xbrl(params[:output])
59
+ range = case args.length
60
+ when 4
61
+ args
62
+ when 2
63
+ date = Date.new(args[0].to_i, args[1].to_i)
64
+ r = LucaBook::Util.current_fy(date, to: date)
65
+ [r[0].year, r[0].month, r[1].year, r[1].month]
66
+ when 0
67
+ if params[:n]
68
+ gen_range(params[:n])
69
+ else
70
+ date = params[:lastyear] ? Date.today.prev_year : Date.today
71
+ r = LucaBook::Util.current_fy(date)
72
+ [r[0].year, r[0].month, r[1].year, r[1].month]
73
+ end
74
+ end
75
+ LucaBook::State.range(*range).render_xbrl(params[:output])
61
76
  end
62
77
 
63
78
  def self.balancesheet(args, params)
@@ -197,14 +212,16 @@ when /reports?/, 'r'
197
212
  case subcmd
198
213
  when 'xbrl'
199
214
  OptionParser.new do |opt|
200
- opt.banner = 'Usage: luca-book reports bs [options] [YYYY M]'
201
- opt.on('-o', '--output VAL', 'output filename') { |v| params[:output] = v }
215
+ opt.banner = 'Usage: luca-book r[eports] xbrl [options] [YYYY M]'
216
+ opt.on('-n VAL', 'report count') { |v| params[:n] = v.to_i }
217
+ opt.on('-o VAL', '--output VAL', 'specify file name') { |v| params[:output] = v }
218
+ opt.on('--lastyear', 'report last Financial Year') { |_v| params[:lastyear] = true }
202
219
  args = opt.parse!(ARGV)
203
220
  LucaCmd::Report.xbrl(args, params)
204
221
  end
205
222
  when 'bs'
206
223
  OptionParser.new do |opt|
207
- opt.banner = 'Usage: luca-book reports bs [options] [YYYY M]'
224
+ opt.banner = 'Usage: luca-book r[eports] bs [options] [YYYY M]'
208
225
  opt.on('-l', '--level VAL', 'account level') { |v| params[:level] = v.to_i }
209
226
  opt.on('--legal', 'show legal mandatory account') { |_v| params[:legal] = true }
210
227
  opt.on('--nu', 'show table in nushell') { |_v| params[:output] = 'nu' }
@@ -214,7 +231,7 @@ when /reports?/, 'r'
214
231
  end
215
232
  when 'pl'
216
233
  OptionParser.new do |opt|
217
- opt.banner = 'Usage: luca-book reports pl [options] [YYYY M YYYY M]'
234
+ opt.banner = 'Usage: luca-book r[eports] pl [options] [YYYY M YYYY M]'
218
235
  opt.on('-l', '--level VAL', 'account level') { |v| params[:level] = v.to_i }
219
236
  opt.on('-n VAL', 'report count') { |v| params[:n] = v.to_i }
220
237
  opt.on('--nu', 'show table in nushell') { |_v| params[:output] = 'nu' }
@@ -224,7 +241,7 @@ when /reports?/, 'r'
224
241
  end
225
242
  when 'mail'
226
243
  OptionParser.new do |opt|
227
- opt.banner = 'Usage: luca-book reports mail [options] [YYYY M YYYY M]'
244
+ opt.banner = 'Usage: luca-book r[eports] mail [options] [YYYY M YYYY M]'
228
245
  opt.on('-l', '--level VAL', 'account level') { |v| params[:level] = v.to_i }
229
246
  opt.on('-n VAL', 'report count') { |v| params[:n] = v.to_i }
230
247
  args = opt.parse!(ARGV)
@@ -5,7 +5,7 @@ require 'luca_support/config'
5
5
 
6
6
  module LucaBook
7
7
  module Accumulator
8
- def self.included(klass) # :nodoc:
8
+ def self.included(klass) #:nodoc:
9
9
  klass.extend ClassMethods
10
10
  end
11
11
 
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module LucaBook # :nodoc:
4
+ module Code
5
+ module_function
6
+
7
+ def currency_code(country)
8
+ {
9
+ 'de' => 'EUR',
10
+ 'ee' => 'EUR',
11
+ 'fr' => 'EUR',
12
+ 'gb' => 'GBP',
13
+ 'in' => 'INR',
14
+ 'it' => 'EUR',
15
+ 'nl' => 'EUR',
16
+ 'jp' => 'JPY',
17
+ 'uk' => 'GBP',
18
+ 'us' => 'USD'
19
+ }[country]
20
+ end
21
+ end
22
+ end
@@ -162,5 +162,36 @@ module LucaBook #:nodoc:
162
162
  record[:note] = record[:note]&.join('\n')
163
163
  end
164
164
  end
165
+
166
+ # Load data based on account code.
167
+ #
168
+ def self.filter_by_code(start_year, start_month, end_year, end_month, code, recursive = true, basedir = @dirname)
169
+ return enum_for(:filter_by_code, start_year, start_month, end_year, end_month, code, basedir) unless block_given?
170
+
171
+ re = recursive ? "^#{code}" : "^#{code}$"
172
+ LucaSupport::Code.encode_term(start_year, start_month, end_year, end_month).each do |subdir|
173
+ open_records(basedir, subdir, nil, nil) do |f, path|
174
+ CSV.new(f, headers: false, col_sep: "\t", encoding: 'UTF-8')
175
+ .each.with_index(0) do |line, i|
176
+ case i
177
+ when 0
178
+ if line.find { |cd| /#{re}/.match(cd) }
179
+ f.rewind
180
+ yield load_data(f, path), path
181
+ break
182
+ end
183
+ when 2
184
+ if line.find { |cd| /#{re}/.match(cd) }
185
+ f.rewind
186
+ yield load_data(f, path), path
187
+ end
188
+ when 3
189
+ break
190
+ else # skip
191
+ end
192
+ end
193
+ end
194
+ end
195
+ end
165
196
  end
166
197
  end
@@ -19,6 +19,12 @@ module LucaBook
19
19
  end
20
20
  FileUtils.cp("#{__dir__}/templates/#{dict}", 'dict/base.tsv') unless File.exist?('dict/base.tsv')
21
21
  FileUtils.cp("#{__dir__}/templates/config.yml", 'config.yml') unless File.exist?('config.yml')
22
+ exdict = if File.exist?("#{__dir__}/templates/dictex-#{country}.tsv")
23
+ "dict-#{country}.tsv"
24
+ else
25
+ nil
26
+ end
27
+ FileUtils.cp("#{__dir__}/templates/#{exdict}", 'dict/ext.tsv') unless (File.exist?('dict/ext.tsv') || exdict.nil?)
22
28
  prepare_starttsv(dict) unless File.exist? 'data/balance/start.tsv'
23
29
  end
24
30
  end
@@ -232,7 +232,6 @@ module LucaBook
232
232
  recursive ? total_subaccount(total) : total
233
233
  end
234
234
 
235
- # TODO: currency setting other than JPY
236
235
  def render_xbrl(filename = nil)
237
236
  set_bs(3, legal: true)
238
237
  set_pl(3)
@@ -246,12 +245,14 @@ module LucaBook
246
245
  prior_bs = @start_balance.filter { |k, _v| /^[9]/.match(k) }
247
246
  @xbrl_entries = @bs_data.map{ |k, v| xbrl_line(k, v, prior_bs[k]) }.compact.join("\n")
248
247
  @xbrl_entries += @pl_data.map{ |k, v| xbrl_line(k, v) }.compact.join("\n")
248
+ @xbrl_entries += equity_change.join("\n")
249
249
  @filename = filename || @issue_date.to_s
250
250
 
251
251
  File.open("#{@filename}.xbrl", 'w') { |f| f.write render_erb(search_template("base-#{country_suffix}.xbrl.erb")) }
252
252
  File.open("#{@filename}.xsd", 'w') { |f| f.write render_erb(search_template("base-#{country_suffix}.xsd.erb")) }
253
253
  end
254
254
 
255
+ # TODO: proper decimals attr for each currency
255
256
  def xbrl_line(code, amount, prior_amount = nil)
256
257
  return nil if /^_/.match(code)
257
258
 
@@ -262,11 +263,11 @@ module LucaBook
262
263
  return nil if readable(amount).zero? && prior_amount.nil?
263
264
 
264
265
  prior = if prior_amount.nil?
265
- /^[9]/.match(code) ? "<#{tag} decimals=\"0\" unitRef=\"JPY\" contextRef=\"Prior1YearNonConsolidatedInstant\">0</#{tag}>\n" : ''
266
+ /^[9]/.match(code) ? "<#{tag} decimals=\"0\" unitRef=\"#{Code.currency_code(CONFIG['country'])}\" contextRef=\"Prior1YearNonConsolidatedInstant\">0</#{tag}>\n" : ''
266
267
  else
267
- "<#{tag} decimals=\"0\" unitRef=\"JPY\" contextRef=\"Prior1YearNonConsolidatedInstant\">#{readable(prior_amount)}</#{tag}>\n"
268
+ "<#{tag} decimals=\"0\" unitRef=\"#{Code.currency_code(CONFIG['country'])}\" contextRef=\"Prior1YearNonConsolidatedInstant\">#{readable(prior_amount)}</#{tag}>\n"
268
269
  end
269
- current = "<#{tag} decimals=\"0\" unitRef=\"JPY\" contextRef=\"#{context}\">#{readable(amount)}</#{tag}>"
270
+ current = "<#{tag} decimals=\"0\" unitRef=\"#{Code.currency_code(CONFIG['country'])}\" contextRef=\"#{context}\">#{readable(amount)}</#{tag}>"
270
271
 
271
272
  prior + current
272
273
  end
@@ -285,9 +286,12 @@ module LucaBook
285
286
  private
286
287
 
287
288
  def set_bs(level = 3, legal: false)
288
- @start_balance.each do |k, v|
289
- next if /^_/.match(k)
290
- @monthly.first[k] = (v || 0) + (@monthly.first[k] || 0)
289
+ unless @monthly.first['_setup']
290
+ @start_balance.each do |k, v|
291
+ next if /^_/.match(k)
292
+ @monthly.first[k] = (v || 0) + (@monthly.first[k] || 0)
293
+ end
294
+ @monthly.first['_setup'] = 'done'
291
295
  end
292
296
  list = @monthly.map { |data| data.select { |k, _v| k.length <= level } }
293
297
  list.map! { |data| code_sum(data).merge(data) } if legal
@@ -322,6 +326,59 @@ module LucaBook
322
326
  end
323
327
  end
324
328
 
329
+ def equity_change
330
+ begin
331
+ ex_dict = LucaRecord::Dict.new('ext.tsv')
332
+ rescue
333
+ return nil
334
+ end
335
+
336
+ changes = []
337
+ LucaBook::Journal.filter_by_code(@start_date.year, @start_date.month, @end_date.year, @end_date.month, '9').each do |dat|
338
+ debit_str = 'ASET' if dat[:debit].find { |e| /^[124]/.match(e[:code]) }
339
+ debit_str ||= '33' if dat[:debit].find { |e| /^[33]/.match(e[:code]) }
340
+ debit_str ||= 'ASET' if dat[:debit].find { |e| /^[3]/.match(e[:code]) }
341
+ credit_str = 'DEBT' if dat[:credit].find { |e| /^[57]/.match(e[:code]) }
342
+ credit_str ||= 'ASET' if dat[:credit].find { |e| /^[12]/.match(e[:code]) }
343
+ dat[:credit].each do |entry|
344
+ case entry[:code]
345
+ when /^(91[0-9a-zA-Z]+)/
346
+ code = $1
347
+ debit_str ||= dat[:debit].find { |e| /^[9]/.match(e[:code]) }.dig(:code)
348
+ debit_str = '914' if /^914[0-9a-zA-Z]+/.match(debit_str)
349
+ tag = ex_dict.dig("#{debit_str}:c#{code}#{credit_str}")&.dig(:xbrl_id)
350
+ changes << [tag, readable(entry[:amount])] if tag
351
+ end
352
+ end
353
+ dat[:debit].each do |entry|
354
+ case entry[:code]
355
+ when /^(916[0-9a-zA-Z]*)/
356
+ tag = ex_dict.dig("d#{$1}:_")&.dig(:xbrl_id)
357
+ changes << [tag, readable(entry[:amount] * -1)] if tag
358
+ when /^(91[0-57-9a-zA-Z]+)/
359
+ code = $1
360
+ credit_str ||= dat[:credit].find { |e| /^[9]/.match(e[:code]) }.dig(:code)
361
+ credit_str = '914' if /^914[0-9a-zA-Z]+/.match(credit_str)
362
+ tag = ex_dict.dig("#{debit_str}:c#{code}#{credit_str}")&.dig(:xbrl_id)
363
+ changes << [tag, readable(entry[:amount])] if tag
364
+ end
365
+ end
366
+ end
367
+ set_bs(4) # require level 4 accounts
368
+ @bs_data.each do |code, amount|
369
+ next if /^[^9]/.match(code)
370
+
371
+ diff = amount - (@start_balance[code]||0)
372
+ next if diff == 0
373
+
374
+ tag = ex_dict.dig("#{code}:#{code}")&.dig(:xbrl_id)
375
+ changes << [tag, readable(diff)] if tag
376
+ end
377
+ currency = %Q(unitRef="#{Code.currency_code(CONFIG['country'])}")
378
+ context = 'contextRef="CurrentYearNonConsolidatedDuration"'
379
+ changes.map { |tag, amount| %Q(<#{tag} decimals="0" #{currency} #{context}>#{amount}</#{tag}>) }
380
+ end
381
+
325
382
  def lib_path
326
383
  __dir__
327
384
  end
@@ -0,0 +1,88 @@
1
+ code label xbrl_id
2
+ ASET:c911 新株の発行、資本金 jpfr-t-cte:IssuanceOfNewSharesCAP
3
+ 912:c911 新株の発行、資本金 jpfr-t-cte:IssuanceOfNewSharesCAP
4
+ 93:c911 新株の発行(新株予約権の行使)、資本金 jpfr-t-cte:IssuanceOfNewSharesExerciseOfSubscriptionRightsToSharesCAP
5
+ ASET:c911DEBT 合併による増加、資本金 jpfr-t-cte:IncreaseByMergerCAP
6
+ ASET:c911DEBT:split 会社分割による増加、資本金 jpfr-t-cte:IncreaseByCorporateDivisionCAP
7
+ 33:c911 株式交換による増加、資本金 jpfr-t-cte:IncreaseByShareTransfersCAP
8
+ 33:c911:transfer 株式移転による増加、資本金 jpfr-t-cte:IncreaseByShareExchangesCAP
9
+ d911ASET:DEBT 分割型の会社分割による減少、資本金 jpfr-t-cte:DecreaseByCorporateDivisionSplitOffTypeCAP
10
+ d911:9131 資本金から準備金への振替、資本金 jpfr-t-cte:TransferToLegalCapitalSurplusFromCapitalStockCAP
11
+ d911:9132 資本金から剰余金への振替、資本金 jpfr-t-cte:TransferToOtherCapitalSurplusFromCapitalStockCAP
12
+ 9131:c911 準備金から資本金への振替、資本金 jpfr-t-cte:TransferToCapitalStockFromLegalCapitalSurplusCAP
13
+ d911:914 減資、資本金 jpfr-t-cte:CapitalReductionCAP
14
+ 911:911 当期変動額合計、資本金 jpfr-t-cte:TotalChangesOfItemsDuringThePeriodCAP
15
+ ASET:c9131 新株の発行、資本準備金 jpfr-t-cte:IssuanceOfNewSharesLCS
16
+ 912:c9131 新株の発行、資本準備金 jpfr-t-cte:IssuanceOfNewSharesLCS
17
+ 93:c9131 新株の発行(新株予約権の行使)、資本準備金 jpfr-t-cte:IssuanceOfNewSharesExerciseOfSubscriptionRightsToSharesLCS
18
+ ASET:c9131DEBT 合併による増加、資本準備金 jpfr-t-cte:IncreaseByMergerLCS
19
+ ASET:c9131DEBT:split 会社分割による増加、資本準備金 jpfr-t-cte:IncreaseByCorporateDivisionLCS
20
+ 33:c9131 株式交換による増加、資本準備金 jpfr-t-cte:IncreaseByShareExchangesLCS
21
+ 33:c9131:transfer 株式移転による増加、資本準備金 jpfr-t-cte:IncreaseByShareTransfersLCS
22
+ d9131ASET:DEBT 分割型の会社分割による減少、資本準備金 jpfr-t-cte:DecreaseByCorporateDivisionSplitOffTypeLCS
23
+ 911:c9131 資本金から準備金への振替、資本準備金 jpfr-t-cte:TransferToLegalCapitalSurplusFromCapitalStockLCS
24
+ d9131:911 準備金から資本金への振替、資本準備金 jpfr-t-cte:TransferToCapitalStockFromLegalCapitalSurplusLCS
25
+ d9131:9132 準備金から剰余金への振替、資本準備金 jpfr-t-cte:TransferToOtherCapitalSurplusFromLegalCapitalSurplusLCS
26
+ d9131:_914 欠損填補、資本準備金 jpfr-t-cte:DeficitDispositionLCS
27
+ d9131:914 資本準備金の取崩、資本準備金 jpfr-t-cte:ReversalOfLegalCapitalSurplusLCS
28
+ 9131:9131 当期変動額合計、資本準備金 jpfr-t-cte:TotalChangesOfItemsDuringThePeriodLCS
29
+ d9132:ASET 剰余金(その他資本剰余金)の配当、その他資本剰余金 jpfr-t-cte:DividendsFromSurplusOtherCapitalSurplusOCS
30
+ d9132:DEBT 剰余金(その他資本剰余金)の配当、その他資本剰余金 jpfr-t-cte:DividendsFromSurplusOtherCapitalSurplusOCS
31
+ d9132:916 自己株式の処分、その他資本剰余金 jpfr-t-cte:DisposalOfTreasuryStockOCS
32
+ ASET:c9132DEBT 合併による増加、その他資本剰余金 jpfr-t-cte:IncreaseByMergerOCS
33
+ ASET:c9132DEBT:split 会社分割による増加、その他資本剰余金 jpfr-t-cte:IncreaseByCorporateDivisionOCS
34
+ 33:c9132 株式交換による増加、その他資本剰余金 jpfr-t-cte:IncreaseByShareExchangesOCS
35
+ 33:c9132:transfer 株式移転による増加、その他資本剰余金 jpfr-t-cte:IncreaseByShareTransfersOCS
36
+ d9132ASET:DEBT 分割型の会社分割による減少、その他資本剰余金 jpfr-t-cte:DecreaseByCorporateDivisionSplitOffTypeOCS
37
+ 911:c9132 資本金から剰余金への振替、その他資本剰余金 jpfr-t-cte:TransferToOtherCapitalSurplusFromCapitalStockOCS
38
+ 9131:c9132 準備金から剰余金への振替、その他資本剰余金 jpfr-t-cte:TransferToCapitalSurplusFromRetainedEarningsOCS
39
+ 914:c9132 利益剰余金から資本剰余金への振替、その他資本剰余金 jpfr-t-cte:TransferToOtherCapitalSurplusFromLegalCapitalSurplusOCS
40
+ d9132:916 自己株式の消却、その他資本剰余金 jpfr-t-cte:RetirementOfTreasuryStockOCS
41
+ d9132:_914 欠損填補、その他資本剰余金 jpfr-t-cte:DeficitDispositionOCS
42
+ d9132:914 資本準備金の取崩、その他資本剰余金 jpfr-t-cte:ReversalOfLegalCapitalSurplusOCS
43
+ d9132:914 減資、その他資本剰余金 jpfr-t-cte:CapitalReductionOCS
44
+ 9132:9132 当期変動額合計、その他資本剰余金 jpfr-t-cte:TotalChangesOfItemsDuringThePeriodOCS
45
+ 915:ASET 剰余金の配当、利益準備金 jpfr-t-cte:DividendsFromSurplusLRE
46
+ ASET:c915DEBT 合併による増加、利益準備金 jpfr-t-cte:IncreaseByMergerLRE
47
+ ASET:c915DEBT:split 会社分割による増加、利益準備金 jpfr-t-cte:IncreaseByCorporateDivisionLRE
48
+ 33:c915 株式交換による増加、利益準備金 jpfr-t-cte:IncreaseByShareExchangesLRE
49
+ 33:c915:transfer 株式移転による増加、利益準備金 jpfr-t-cte:IncreaseByShareTransfersLRE
50
+ d915ASET:DEBT 分割型の会社分割による減少、利益準備金 jpfr-t-cte:DecreaseByCorporateDivisionSplitOffTypeLRE
51
+ 914:c915 利益準備金の積立、利益準備金 jpfr-t-cte:ProvisionOfLegalRetainedEarningsLRE
52
+ d915:914 利益準備金の取崩、利益準備金 jpfr-t-cte:ReversalOfLegalRetainedEarningsLRE
53
+ 915:915 当期変動額合計、利益準備金 jpfr-t-cte:TotalChangesOfItemsDuringThePeriodLRE
54
+ d9141:ASET 剰余金の配当、その他利益剰余金 jpfr-t-cte:DividendsFromSurplusORE
55
+ d9141:DEBT 剰余金の配当、その他利益剰余金 jpfr-t-cte:DividendsFromSurplusORE
56
+ ASET:c9141DEBT 合併による増加、その他利益剰余金 jpfr-t-cte:IncreaseByMergerORE
57
+ ASET:c9141DEBT:split 会社分割による増加、その他利益剰余金 jpfr-t-cte:IncreaseByCorporateDivisionORE
58
+ 33:c9141 株式交換による増加、その他利益剰余金 jpfr-t-cte:IncreaseByShareExchangesORE
59
+ 33:c9141:transfer 株式移転による増加、その他利益剰余金 jpfr-t-cte:IncreaseByShareTransfersORE
60
+ d9141ASET:DEBT 分割型の会社分割による減少、その他利益剰余金 jpfr-t-cte:DecreaseByCorporateDivisionSplitOffTypeORE
61
+ d9141:916 自己株式の処分、その他利益剰余金 jpfr-t-cte:DisposalOfTreasuryStockORE
62
+ d9141:916 自己株式の消却、その他利益剰余金 jpfr-t-cte:RetirementOfTreasuryStockORE
63
+ d9141:_DEBT 利益処分、その他利益剰余金 jpfr-t-cte:ProfitAppropriationORE
64
+ d9141:915 利益準備金の積立、その他利益剰余金 jpfr-t-cte:ProvisionOfLegalRetainedEarningsORE
65
+ 915:c9141 利益準備金の取崩、その他利益剰余金 jpfr-t-cte:ReversalOfLegalRetainedEarningsORE
66
+ 911:c9141 減資、その他利益剰余金 jpfr-t-cte:CapitalReductionORE
67
+ d9141:9132 利益剰余金から資本剰余金への振替、その他利益剰余金 jpfr-t-cte:TransferToCapitalSurplusFromRetainedEarningsORE
68
+ 9141:9141 当期変動額合計、その他利益剰余金 jpfr-t-cte:TotalChangesOfItemsDuringThePeriodORE
69
+ d9142:ASET 剰余金の配当、繰越利益剰余金 jpfr-t-cte:DividendsFromSurplusREBF
70
+ ASET:c9142DEBT 合併による増加、繰越利益剰余金 jpfr-t-cte:IncreaseByMergerREBF
71
+ ASET:c9142DEBT:split 会社分割による増加、繰越利益剰余金 jpfr-t-cte:IncreaseByCorporateDivisionREBF
72
+ 33:c9142 株式交換による増加、繰越利益剰余金 jpfr-t-cte:IncreaseByShareExchangesREBF
73
+ 33:c9142:transfer 株式移転による増加、繰越利益剰余金 jpfr-t-cte:IncreaseByShareTransfersREBF
74
+ d9142ASET:DEBT 分割型の会社分割による減少、繰越利益剰余金 jpfr-t-cte:DecreaseByCorporateDivisionSplitOffTypeREBF
75
+ d9142:916 自己株式の処分、繰越利益剰余金 jpfr-t-cte:DisposalOfTreasuryStockREBF
76
+ d9142:916 自己株式の消却、繰越利益剰余金 jpfr-t-cte:RetirementOfTreasuryStockREBF
77
+ d9142:_DEBT 利益処分、繰越利益剰余金 jpfr-t-cte:ProfitAppropriationREBF
78
+ d9142:915 利益準備金の積立、繰越利益剰余金 jpfr-t-cte:ProvisionOfLegalRetainedEarningsREBF
79
+ 915:c9142 利益準備金の取崩、繰越利益剰余金 jpfr-t-cte:ReversalOfLegalRetainedEarningsREBF
80
+ _913:c9142 欠損填補、繰越利益剰余金 jpfr-t-cte:DeficitDispositionREBF
81
+ 911:c9142 減資、繰越利益剰余金 jpfr-t-cte:CapitalReductionREBF
82
+ d9142:9132 利益剰余金から資本剰余金への振替、繰越利益剰余金 jpfr-t-cte:TransferToCapitalSurplusFromRetainedEarningsREBF
83
+ 9142:9142 当期変動額合計、繰越利益剰余金 jpfr-t-cte:TotalChangesOfItemsDuringThePeriodREBF
84
+ d916:_ 自己株式の取得、自己株式 jpfr-t-cte:PurchaseOfTreasuryStockTS
85
+ _:c916 自己株式の処分、自己株式 jpfr-t-cte:DisposalOfTreasuryStockTS
86
+ _:c916 自己株式の消却、自己株式 jpfr-t-cte:RetirementOfTreasuryStockTS
87
+ _916:916 持分法適用会社に対する持分変動に伴う自己株式の増減、自己株式 jpfr-t-cte:ChangeInEquityInAffiliatesAccountedForByEquityMethodTreasuryStockTS
88
+ 916:916 当期変動額合計、自己株式 jpfr-t-cte:TotalChangesOfItemsDuringThePeriodTS
@@ -5,7 +5,7 @@ require 'luca_book'
5
5
  require 'luca_record/io'
6
6
  require 'luca_support/range'
7
7
 
8
- module LucaBook # :nodoc:
8
+ module LucaBook #:nodoc:
9
9
  # Provide data testing framework utilizing minitest.
10
10
  #
11
11
  class Test < MiniTest::Test
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module LucaBook
4
- VERSION = '0.2.32'
4
+ VERSION = '0.3.0'
5
5
  end
data/lib/luca_book.rb CHANGED
@@ -6,6 +6,7 @@ require 'luca_book/version'
6
6
 
7
7
  module LucaBook
8
8
  autoload :Accumulator, 'luca_book/accumulator'
9
+ autoload :Code, 'luca_book/code'
9
10
  autoload :Dict, 'luca_book/dict'
10
11
  autoload :Import, 'luca_book/import'
11
12
  autoload :Journal, 'luca_book/journal'
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.32
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chuma Takahiro
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-03-14 00:00:00.000000000 Z
11
+ date: 2022-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lucarecord
@@ -80,6 +80,7 @@ files:
80
80
  - exe/luca-book
81
81
  - lib/luca_book.rb
82
82
  - lib/luca_book/accumulator.rb
83
+ - lib/luca_book/code.rb
83
84
  - lib/luca_book/console.rb
84
85
  - lib/luca_book/dict.rb
85
86
  - lib/luca_book/import.rb
@@ -95,6 +96,7 @@ files:
95
96
  - lib/luca_book/templates/dict-en.tsv
96
97
  - lib/luca_book/templates/dict-jp-edinet.tsv
97
98
  - lib/luca_book/templates/dict-jp.tsv
99
+ - lib/luca_book/templates/dictex-jp.tsv
98
100
  - lib/luca_book/templates/journals.html.erb
99
101
  - lib/luca_book/templates/monthly-report.html.erb
100
102
  - lib/luca_book/test.rb