lucabook 0.5.3 → 0.5.4

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: 33c275cc53bc4538109f607fcfac3cb8ae5014863037c58ff6a74903cf6dc862
4
- data.tar.gz: 6b51180e7d5501cc94d030859ff4ad12508fc1aa68a848f5d78e89bf06f1a2c4
3
+ metadata.gz: c6cc66f4a8bcc5ca7fb1e2a86c6ba57d1ff75d01dec530835ad671386ca2409a
4
+ data.tar.gz: d13133523464f63818b5acea123472f9ab736ba50c6bba4f93ec1cc3924246d7
5
5
  SHA512:
6
- metadata.gz: c2d2db06519f28374a632f9ec8e697af1e52cb73f46042cb1b14ab3404441cc3fe3395c59d39cb4b50dad1d571f5a4cec8f1824d864ea00a6958ee832f10b12c
7
- data.tar.gz: 45e5306fdd26e9fa9a2e3850a4674cbe552a5a612e3b57f98319d3e0d67687bfd6a2bf3c3dffc0bba5722ceadef3b3fb43a2846faa281d02eeaee66c97cadff0
6
+ metadata.gz: fdb7baa012b6110695687435f830eb64f930a88025284494ba509ec76d27f6f3bc906ff5cd8ea936869b4f339fa2a7854ee456534ec4e2c63eec4bfe876e794d
7
+ data.tar.gz: 5b49a82f52825781ad3c5e7db1bfcb45be9ef2e0c4f93040d3d368bfa8e6da5b4048eb97550c947c154646c277c4496d3c50e1f4ec9d23604a15f73ddf754bb5
data/exe/luca-book CHANGED
@@ -77,7 +77,7 @@ class LucaCmd
77
77
  [r[0].year, r[0].month, r[1].year, r[1].month]
78
78
  end
79
79
  end
80
- LucaBook::State.range(*range).render_xbrl(params[:output])
80
+ LucaBook::State.range(*range).write_xbrl(params[:output])
81
81
  end
82
82
 
83
83
  def self.balancesheet(args, params)
@@ -102,12 +102,13 @@ module LucaBook
102
102
  end
103
103
 
104
104
  def self.latest_balance_path(date)
105
- start_year = date.month >= LucaSupport::CONST.config['fy_start'] ? date.year : date.year - 1
106
- latest = Date.new(start_year, LucaSupport::CONST.config['fy_start'], 1).prev_month
105
+ start_date, _ = LucaBook::Util.current_fy(date)
107
106
  dict_dir = Pathname(LucaSupport::CONST.pjdir) / 'data' / 'balance'
108
- fileglob = %Q(start-#{latest.year}-#{format("%02d", latest.month)}-*)
109
- path = Dir.glob(fileglob, base: dict_dir)[0] || 'start.tsv'
110
- dict_dir / path
107
+ paths = Dir.glob(%Q(start-*-*-*), base: dict_dir, sort: true)
108
+ .reject {|path| path > %Q(start-#{start_date.year}-#{format("%02d", start_date.month)}-) }
109
+ return dict_dir / 'start.tsv' if paths.empty?
110
+
111
+ dict_dir / paths.reverse.first
111
112
  end
112
113
 
113
114
  def self.issue_date(obj)
@@ -213,17 +213,18 @@ module LucaBook
213
213
 
214
214
  def self.start_balance(year, month, recursive: true)
215
215
  start_date = Date.new(year, month, 1)
216
- base = Dict.latest_balance(start_date).each_with_object({}) do |(k, v), h|
216
+ balance = Dict.latest_balance(start_date)
217
+ base = balance.each_with_object({}) do |(k, v), h|
217
218
  h[k] = BigDecimal(v[:balance].to_s) if v[:balance]
218
219
  h[k] ||= BigDecimal('0') if k.length == 2
219
220
  end
220
- if month == LucaSupport::CONST.config['fy_start'].to_i
221
+ pre_first = Date.parse(balance.dig("_date", :label)).next_month
222
+ if start_date <= pre_first
221
223
  return recursive ? total_subaccount(base) : base
222
224
  end
223
225
 
224
226
  pre_last = start_date.prev_month
225
- year -= 1 if month <= LucaSupport::CONST.config['fy_start'].to_i
226
- pre = accumulate_term(year, LucaSupport::CONST.config['fy_start'], pre_last.year, pre_last.month)
227
+ pre = accumulate_term(pre_first.year, pre_first.month, pre_last.year, pre_last.month)
227
228
  total = {}.tap do |h|
228
229
  (pre.keys + base.keys).uniq.each do |k|
229
230
  h[k] = (base[k] || BigDecimal('0')) + (pre[k] || BigDecimal('0'))
@@ -232,6 +233,14 @@ module LucaBook
232
233
  recursive ? total_subaccount(total) : total
233
234
  end
234
235
 
236
+ def write_xbrl(filename = nil)
237
+ xbrl, xsd = render_xbrl(filename)
238
+ doctype = %Q(<?xml version="1.0" encoding="UTF-8"?>)
239
+
240
+ File.open("#{@filename}.xbrl", 'w') { |f| f.write [doctype, xbrl].join("\n") }
241
+ File.open("#{@filename}.xsd", 'w') { |f| f.write [doctype, xsd].join("\n") }
242
+ end
243
+
235
244
  def render_xbrl(filename = nil)
236
245
  set_bs(3, legal: true)
237
246
  set_pl(3)
@@ -248,8 +257,7 @@ module LucaBook
248
257
  @xbrl_entries += equity_change.join("\n")
249
258
  @filename = filename || "statement-#{@issue_date}"
250
259
 
251
- File.open("#{@filename}.xbrl", 'w') { |f| f.write render_erb(search_template("base-#{country_suffix}.xbrl.erb")) }
252
- File.open("#{@filename}.xsd", 'w') { |f| f.write render_erb(search_template("base-#{country_suffix}.xsd.erb")) }
260
+ [render_erb(search_template("base-#{country_suffix}.xbrl.erb")), render_erb(search_template("base-#{country_suffix}.xsd.erb"))]
253
261
  end
254
262
 
255
263
  # TODO: proper decimals attr for each currency
@@ -336,7 +344,7 @@ module LucaBook
336
344
  changes = []
337
345
  LucaBook::Journal.filter_by_code(@start_date.year, @start_date.month, @end_date.year, @end_date.month, '9').each do |dat|
338
346
  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]) }
347
+ debit_str ||= '33' if dat[:debit].find { |e| /^33/.match(e[:code]) }
340
348
  debit_str ||= 'ASET' if dat[:debit].find { |e| /^[3]/.match(e[:code]) }
341
349
  credit_str = 'DEBT' if dat[:credit].find { |e| /^[57]/.match(e[:code]) }
342
350
  credit_str ||= 'ASET' if dat[:credit].find { |e| /^[12]/.match(e[:code]) }
@@ -1,4 +1,3 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
1
  <xbrli:xbrl xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:iso4217="http://www.xbrl.org/2003/iso4217" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:jpfr-etax-di="http://xml.e-tax.nta.go.jp/jp/fr/etax/o/di/2013-03-25" xmlns:jpfr-oe="http://info.edinet-fsa.go.jp/jp/fr/gaap/o/oe/2012-01-25" xmlns:jpfr-t-cte="http://info.edinet-fsa.go.jp/jp/fr/gaap/t/cte/2012-01-25" xmlns:jppfs_cor="http://disclosure.edinet-fsa.go.jp/taxonomy/jppfs/2019-11-01/jppfs_cor" xmlns:jpfr-etax-t-cte="http://xml.e-tax.nta.go.jp/jp/fr/etax/t/cte/2013-03-25">
3
2
  <link:schemaRef xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="<%= @filename %>.xsd" />
4
3
 
@@ -1,4 +1,3 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
1
  <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:e-tax-pks-<%= @issue_date %>="http://xbrlsoft.e-tax.nta.go.jp/XSD/e-tax-pks-<%= @issue_date %>" targetNamespace="http://xbrlsoft.e-tax.nta.go.jp/XSD/e-tax-pks-<%= @issue_date %>" elementFormDefault="qualified">
3
2
  <xsd:import namespace="http://www.xbrl.org/2003/instance" schemaLocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd" />
4
3
  <xsd:import namespace="http://xml.e-tax.nta.go.jp/jp/fr/etax/o/di/2013-03-25" schemaLocation="http://xml.e-tax.nta.go.jp/jp/fr/etax/o/di/2013-03-25/jpfr-etax-di-2013-03-25.xsd" />
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module LucaBook
4
- VERSION = '0.5.3'
4
+ VERSION = '0.5.4'
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.5.3
4
+ version: 0.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chuma Takahiro
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-03-31 00:00:00.000000000 Z
11
+ date: 2024-04-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lucarecord