luca-jp 0.19.0 → 0.20.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: 90bae24e5243dd793a1c43b66e67d4aa92df675264b5f80e1ad2020b86fb7a85
4
- data.tar.gz: 54064470cd7f69a391ce7a22e25fea56eea0eb0820c94a3678fb6fb8eca0cf58
3
+ metadata.gz: ba1a44cc2c4fb3c68846033a3f74f4791a298a9d0c4efcd0786d9cebc75954ce
4
+ data.tar.gz: 30ab64d9b5a8a733848ca07968f545958e8f28584ad68425763b0e7e13e8250e
5
5
  SHA512:
6
- metadata.gz: 85ce4d176026e2250e5a8feca739f212730461231801b633a078d6a3895db04a7cdba2ec2916aa94a2d3f5da62b96b3eb5808f2991a92ea05d6718d6e1cbdbb9
7
- data.tar.gz: 134e8fe26f2dd02d2606b56915eb25be299644c8a1ead108078b8f4695923d2a9e7ef9245a0d3fd7e4dd989461da25905333a9be7306ce327f5efd725d223e66
6
+ metadata.gz: 47ced553bf51ef56c53875947c421ca42ff76d28aa29a8f1239c7b88908dcaf9a0d8e61491b69ec2e62e249d7d34e5c2329e158a4b086a359565f295217eec3c
7
+ data.tar.gz: 217197462328275f4ccf4a59ec706d5515196036b1eb3f0950bd701a0017d24ba0a79f695170e11e7ca463c6aa23ef9c00aed5e570e92ed8279da2584b79f5d1
data/exe/luca-jp CHANGED
@@ -3,8 +3,8 @@
3
3
 
4
4
  require 'optparse'
5
5
  require 'luca/jp'
6
- require 'luca_salary/jp_payreport'
7
6
  require 'luca_cmd'
7
+ require 'luca_salary/jp_payreport'
8
8
  require 'luca_support/const'
9
9
  require 'yaml'
10
10
 
@@ -24,7 +24,7 @@ class LucaCmd
24
24
  if params[:export]
25
25
  puts Luca::Jp::Aoiro.range(*auto_range(args, params)).export_json(ext_config: ext_config)
26
26
  else
27
- puts Luca::Jp::Aoiro.range(*auto_range(args, params)).kani(ext_config: ext_config, no_xbrl: params[:noxbrl])
27
+ puts Luca::Jp::Aoiro.range(*auto_range(args, params)).kani(ext_config: ext_config, no_xbrl: params[:noxbrl], kessanbi: params[:kessanbi])
28
28
  end
29
29
  end
30
30
 
@@ -37,7 +37,9 @@ class LucaCmd
37
37
  puts JSON.dump(accounts)
38
38
  else
39
39
  Luca::Jp::Util.eltax_config('reports').each do |report|
40
- File.open("chihouzei-#{report['jichitai_code']}#{report['jimusho_code']}.xml", 'w') { |f| f.puts(Luca::Jp::Chihouzei.range(*auto_range(args, params)).kani(report, ext_config: ext_config))}
40
+ File.open("chihouzei-#{report['jichitai_code']}#{report['jimusho_code']}.xml", 'w') do |f|
41
+ f.puts(Luca::Jp::Chihouzei.range(*auto_range(args, params)).kani(report, ext_config: ext_config, kessanbi: params[:kessanbi]))
42
+ end
41
43
  end
42
44
  end
43
45
  end
@@ -56,9 +58,14 @@ class LucaCmd
56
58
  r = LucaBook::Util.current_fy(date, to: date)
57
59
  [r[0].year, r[0].month, r[1].year, r[1].month]
58
60
  when 0
59
- date = params[:lastyear] ? Date.today.prev_year : Date.today
60
- r = LucaBook::Util.current_fy(date)
61
- [r[0].year, r[0].month, r[1].year, r[1].month]
61
+ if params[:kessanbi]
62
+ r = LucaBook::Util.previous_fy(params[:kessanbi])
63
+ [r[0].year, r[0].month, r[1].year, r[1].month]
64
+ else
65
+ date = params[:lastyear] ? Date.today.prev_year : Date.today
66
+ r = LucaBook::Util.current_fy(date)
67
+ [r[0].year, r[0].month, r[1].year, r[1].month]
68
+ end
62
69
  end
63
70
  end
64
71
  end
@@ -81,6 +88,7 @@ when 'h', /hou?jinzei/
81
88
  opt.banner = 'Usage: luca-jp h|houjinzei [options] [yyyy mm yyyy mm]'
82
89
  opt.on('-x VAL', 'extra config') { |v| params[:extra] = v }
83
90
  opt.on('--export', 'export json') { |_v| params[:export] = true }
91
+ opt.on('--kessan VAL', 'settlement date') { |v| params[:kessanbi] = Date.parse(v) }
84
92
  opt.on('--lastyear', 'report on last Financial year') { |_v| params[:lastyear] = true }
85
93
  opt.on('--no-xbrl', 'skip XBRL statement') { |_v| params[:noxbrl] = true }
86
94
  args = opt.parse!(ARGV)
@@ -103,6 +111,7 @@ when 'c', /chihou?zei/
103
111
  opt.banner = 'Usage: luca-jp c|chihouzei [options] [yyyy mm yyyy mm]'
104
112
  opt.on('-x VAL', 'extra config') { |v| params[:extra] = v }
105
113
  opt.on('--export', 'export json') { |_v| params[:export] = true }
114
+ opt.on('--kessan VAL', 'settlement date') { |v| params[:kessanbi] = Date.parse(v) }
106
115
  opt.on('--lastyear', 'report on last Financial year') { |_v| params[:lastyear] = true }
107
116
  args = opt.parse!(ARGV)
108
117
  LucaCmd.check_dir('journals', ext_conf: EXT_CONF) do
@@ -112,7 +121,7 @@ when 'c', /chihou?zei/
112
121
  when /urikake/
113
122
  OptionParser.new do |opt|
114
123
  opt.banner = 'Usage: luca-jp urikake [options] yyyy mm'
115
- opt.on('--utf8', 'UTF-8でファイル生成') { |_v| params[:encode] = 'UTF-8' }
124
+ opt.on('--utf8', '確認用にUTF-8でファイル生成') { |_v| params[:encode] = 'UTF-8' }
116
125
  args = opt.parse!(ARGV)
117
126
  LucaCmd.check_dir('invoices', ext_conf: EXT_CONF) do
118
127
  LucaCmd.urikake(args, params)
data/lib/luca/jp/aoiro.rb CHANGED
@@ -20,10 +20,11 @@ module Luca
20
20
  @dirname = 'journals'
21
21
  @record_type = 'raw'
22
22
 
23
- def kani(ext_config: nil, export: false, no_xbrl: false)
23
+ def kani(ext_config: nil, export: false, no_xbrl: false, kessanbi: nil)
24
24
  set_pl(4)
25
25
  set_bs(4)
26
26
  @issue_date = Date.today
27
+ @kessanbi = kessanbi
27
28
  @company = CGI.escapeHTML(config.dig('company', 'name'))
28
29
  @software = 'LucaJp'
29
30
  @shinkoku_kbn = '30' # 確定申告
@@ -50,6 +51,7 @@ module Luca
50
51
  @法人税未払 = [@差引所得に対する法人税額 - @法人税中間納付, 0].max
51
52
 
52
53
  if export
54
+ @繰越損失管理.save unless @繰越損失管理.nil?
53
55
  {
54
56
  kokuzei: {
55
57
  zeigaku: @確定法人税額,
@@ -161,7 +163,7 @@ module Luca
161
163
  end
162
164
 
163
165
  def 別表一
164
- STDERR.puts "別表一: 「決算確定の日」などの追記が必要"
166
+ STDERR.puts "別表一: 「決算確定の日」などの追記、または --kessan オプション指定が必要" if @kessanbi.nil?
165
167
  render_erb(search_template('beppyo1.xml.erb'))
166
168
  end
167
169
 
@@ -354,7 +356,8 @@ module Luca
354
356
  @概況給料 = gaikyo('C12')
355
357
  @概況交際費 = gaikyo('C1B')
356
358
  @概況減価償却 = gaikyo('C1P')
357
- @概況地代租税 = ['C1E', 'C1I'].map { |k| gaikyo(k) }.compact.sum
359
+ chidai_accounts = @form_vers['HOK010'] >= '6.0' ? ['C1E'] : ['C1E', 'C1I']
360
+ @概況地代租税 = chidai_accounts.map { |k| gaikyo(k) }.compact.sum
358
361
  @概況営業損益 = gaikyo('CA')
359
362
  @概況特別利益 = gaikyo('F0')
360
363
  @概況特別損失 = gaikyo('G0')
@@ -394,7 +397,10 @@ module Luca
394
397
  end
395
398
 
396
399
  def 決算書
397
- return nil if @no_xbrl
400
+ if @no_xbrl
401
+ STDERR.puts "決算書XBRLをeTaxソフトに追加インポートする必要あり"
402
+ return nil
403
+ end
398
404
 
399
405
  @xbrl_filename = %Q(statement-#{@issue_date.to_s})
400
406
  @xbrl, @xsd = LucaBook::State.range(@start_date.year, @start_date.month, @end_date.year, @end_date.month)
@@ -544,8 +550,15 @@ module Luca
544
550
  @当期純損益 + @損金不算入額留保 - @益金不算入額留保
545
551
  end
546
552
 
553
+ # NOTE: 別表四社外流出欄の本書と外書の区分は紙の事務を前提としており自明ではない。
554
+ # 帳票フィールド仕様書を参照して実装するほかない
555
+ #
547
556
  def 別表四調整所得仮計社外流出
548
- @当期純損益 + @損金不算入額社外流出 - @益金不算入額社外流出
557
+ @損金不算入額社外流出
558
+ end
559
+
560
+ def 別表四調整所得仮計社外流出外書
561
+ @益金不算入額社外流出 * -1
549
562
  end
550
563
 
551
564
  # 損金経理した税額控除対象額の調整
@@ -569,6 +582,10 @@ module Luca
569
582
  ].compact.sum
570
583
  end
571
584
 
585
+ def 別表四調整所得合計社外流出外書
586
+ 別表四調整所得仮計社外流出外書
587
+ end
588
+
572
589
  def 別表四還付法人税等金額
573
590
  refund_tax()
574
591
  end
@@ -951,14 +968,27 @@ module Luca
951
968
  end
952
969
 
953
970
  def proc_version
954
- if @end_date >= Date.parse('2023-4-1')
955
- { 'proc' => '23.0.2', 'HOA112' => '5.0', 'HOA116' => '4.0', 'HOA201' => '5.0', 'HOA420' => '22.0', 'HOA511' => '14.0', 'HOA522' => '9.0', 'HOB710' => '13.0', 'HOE200' => '14.0', 'HOE990' => '7.0', 'HOK010' => '6.0' }
971
+ init_version = {
972
+ 'HOA201' => '4.0',
973
+ 'HOA511' => '13.0',
974
+ 'HOB710' => '11.0',
975
+ 'HOE200' => '13.0',
976
+ 'HOE990' => '5.0',
977
+ 'HOI090' => '4.0',
978
+ 'HOI100' => '5.0',
979
+ 'HOI150' => '3.0',
980
+ 'HOI160' => '3.0',
981
+ }
982
+ if @end_date >= Date.parse('2024-4-1')
983
+ { 'proc' => '24.0.2', 'HOA112' => '6.0', 'HOA116' => '4.0', 'HOA201' => '5.0', 'HOA420' => '23.0', 'HOA511' => '15.0', 'HOA522' => '9.0', 'HOB710' => '13.0', 'HOE200' => '14.0', 'HOE990' => '7.0', 'HOI090' => '5.0', 'HOI100' => '6.0', 'HOI150' => '4.0', 'HOI160' => '4.0', 'HOK010' => '7.0' }
984
+ elsif @end_date >= Date.parse('2023-4-1')
985
+ init_version.merge({ 'proc' => '23.0.2', 'HOA112' => '5.0', 'HOA116' => '4.0', 'HOA201' => '5.0', 'HOA420' => '22.0', 'HOA511' => '14.0', 'HOA522' => '9.0', 'HOB710' => '13.0', 'HOE200' => '14.0', 'HOE990' => '7.0', 'HOK010' => '6.0' })
956
986
  elsif @end_date >= Date.parse('2022-4-1')
957
- { 'proc' => '22.0.3', 'HOA112' => '4.0', 'HOA116' => '3.0', 'HOA201' => '4.0', 'HOA420' => '21.0', 'HOA511' => '14.0', 'HOA522' => '8.0', 'HOB710' => '12.0', 'HOE200' => '14.0', 'HOE990' => '6.1', 'HOK010' => '6.0' }
987
+ init_version.merge({ 'proc' => '22.0.3', 'HOA112' => '4.0', 'HOA116' => '3.0', 'HOA420' => '21.0', 'HOA511' => '14.0', 'HOA522' => '8.0', 'HOB710' => '12.0', 'HOE200' => '14.0', 'HOE990' => '6.1', 'HOK010' => '6.0' })
958
988
  elsif @end_date >= Date.parse('2021-4-1')
959
- { 'proc' => '21.0.2', 'HOA112' => '3.1', 'HOA116' => '2.0', 'HOA201' => '4.0', 'HOA420' => '20.0', 'HOA511' => '13.0', 'HOA522' => '7.0', 'HOB710' => '11.0', 'HOE200' => '13.0', 'HOE990' => '5.0', 'HOK010' => '6.0' }
989
+ init_version.merge({ 'proc' => '21.0.2', 'HOA112' => '3.1', 'HOA116' => '2.0', 'HOA420' => '20.0', 'HOA522' => '7.0', 'HOK010' => '6.0' })
960
990
  else
961
- { 'proc' => '20.0.2', 'HOA112' => '2.0', 'HOA116' => '1.0', 'HOA201' => '4.0', 'HOA420' => '19.0', 'HOA511' => '13.0', 'HOA522' => '6.0', 'HOB710' => '11.0', 'HOE200' => '13.0', 'HOE990' => '5.0', 'HOK010' => '5.0' }
991
+ init_version.merge({ 'proc' => '20.0.2', 'HOA112' => '2.0', 'HOA116' => '1.0', 'HOA420' => '19.0', 'HOA522' => '6.0', 'HOK010' => '5.0' })
962
992
  end
963
993
  end
964
994
 
@@ -17,10 +17,11 @@ module Luca
17
17
  @dirname = 'journals'
18
18
  @record_type = 'raw'
19
19
 
20
- def kani(report_cfg, export: false, ext_config: nil)
20
+ def kani(report_cfg, export: false, ext_config: nil, kessanbi: nil)
21
21
  set_pl(4)
22
22
  set_bs(4)
23
23
  @issue_date = Date.today
24
+ @kessanbi = kessanbi
24
25
  @software = 'LucaJp'
25
26
  @jimusho_name = report_cfg['jimusho_name']
26
27
  @report_category = report_cfg['type']
@@ -147,7 +148,7 @@ module Luca
147
148
 
148
149
  def 第六号
149
150
  @資本金準備金 = readable(['911', '9131'].map { |cd| @bs_data.dig(cd) }.compact.sum)
150
- STDERR.puts "第六号様式: 「決算確定の日」などの追記が必要。「国外関連者」の確認が必要"
151
+ STDERR.puts "第六号様式: #{ %q(「決算確定の日」などの追記、または --kessan オプション指定が必要。) if @kessanbi.nil? }「国外関連者」の確認が必要"
151
152
  render_erb(search_template('el-no6.xml.erb'))
152
153
  end
153
154
 
@@ -199,8 +200,8 @@ module Luca
199
200
  next if deduction == 0 && record['amount'] == 0
200
201
 
201
202
  %Q(<AMB00200>
202
- <AMB00210>#{etax_date(@start_date)}</AMB00210>
203
- <AMB00220>#{etax_date(@end_date)}</AMB00220>
203
+ <AMB00210>#{etax_date(record['start_date'])}</AMB00210>
204
+ <AMB00220>#{etax_date(record['end_date'])}</AMB00220>
204
205
  <AMB00225>1</AMB00225>
205
206
  #{render_attr('AMB00230', deduction + record['amount'])}
206
207
  #{render_attr('AMB00240', deduction)}
@@ -268,7 +269,11 @@ module Luca
268
269
  end
269
270
 
270
271
  def proc_version
271
- if @end_date >= Date.parse('2022-4-1')
272
+ if @start_date >= Date.parse('2025-4-1')
273
+ { 'R0102AA' => '250', 'R0102AG' => '211', 'R0102AM' => '240' }
274
+ elsif @end_date >= Date.parse('2024-4-1')
275
+ { 'R0102AA' => '240', 'R0102AG' => '211', 'R0102AM' => '240' }
276
+ elsif @end_date >= Date.parse('2022-4-1')
272
277
  { 'R0102AA' => '211', 'R0102AG' => '211', 'R0102AM' => '211' }
273
278
  elsif @start_date >= Date.parse('2020-4-1')
274
279
  { 'R0102AA' => '200', 'R0102AG' => '120','R0102AM' => '200' }
@@ -68,7 +68,7 @@ module Luca
68
68
  # 繰越損失適用後の所得金額
69
69
  #
70
70
  def 所得金額
71
- @繰越損失管理 = Sonshitsu.load(@end_date).update(@別表四調整所得).save if @繰越損失管理.nil?
71
+ @繰越損失管理 = Sonshitsu.load(@end_date).update(@別表四調整所得) if @繰越損失管理.nil?
72
72
  @繰越損失管理.profit
73
73
  end
74
74
 
@@ -31,9 +31,9 @@ module Luca
31
31
  # - start_date: 2020-01-01
32
32
  # end_date: 2020-12-31
33
33
  # increase: 1000000
34
- # - start_date: 2021-01-01
35
- # end_date: 2021-12-31
36
- # decrease: 800000
34
+ # decrease:
35
+ # - date: 2021-12-31
36
+ # val: 800000
37
37
  #
38
38
  def self.load(this_year)
39
39
  records = if File.exist?(record_file)
@@ -47,6 +47,10 @@ module Luca
47
47
  end
48
48
 
49
49
  def save
50
+ @records.each do |record|
51
+ record.delete('amount')
52
+ record.delete('decrease') if record['decrease'].nil? || record['decrease'].empty?
53
+ end
50
54
  File.open(self.class.record_file, 'w') { |f| f.puts YAML.dump(@records)}
51
55
  self
52
56
  end
@@ -83,14 +87,14 @@ module Luca
83
87
  def net_amount
84
88
  @records.each do |record|
85
89
  record['amount'] = record['increase'] - past_decreased(record['decrease'])
86
- record['decrease'] = record['decrease']&.reject { |decrease_record| decrease_record['date'] > @report_date.prev_year }
90
+ record['decrease'] = record['decrease']&.reject { |decrease_record| decrease_record['date'] >= @report_date }
87
91
  end
88
92
  end
89
93
 
90
94
  def past_decreased(decrease_records)
91
95
  return 0 if decrease_records.nil?
92
96
 
93
- decrease_records.filter { |record| record['date'] <= @report_date.prev_year }
97
+ decrease_records.filter { |record| record['date'] < @report_date }
94
98
  .map { |record| record['val'] }.sum || 0
95
99
  end
96
100
 
@@ -169,7 +169,9 @@ module Luca
169
169
  end
170
170
 
171
171
  def proc_version
172
- if @end_date >= Date.parse('2023-10-1')
172
+ if @end_date >= Date.parse('2024-4-1')
173
+ { 'proc' => '23.2.0', 'SHA020' => '9.0' }
174
+ elsif @end_date >= Date.parse('2023-10-1')
173
175
  { 'proc' => '23.0.0', 'SHA020' => '9.0' }
174
176
  elsif @end_date >= Date.parse('2021-4-1')
175
177
  { 'proc' => '20.0.1', 'SHA020' => '7.1' }
@@ -32,6 +32,7 @@
32
32
  <BGA00350 IDREF="JIGYO_NENDO_TO"/>
33
33
  </BGA00330>
34
34
  <BGA00360 IDREF="SHINKOKU_KBN"/>
35
+ <%= render_attr('BGA00410', etax_date(@kessanbi)) -%>
35
36
  <BGA00420 IDREF="KANPU_KINYUKIKAN"/>
36
37
  </BGA00000>
37
38
 
@@ -96,7 +96,7 @@
96
96
  <%= render_attr('ARD00290', @益金不算入額) %>
97
97
  <%= render_attr('ARD00300', @益金不算入額留保) %>
98
98
  <ARD00310>
99
- <%= render_attr('ARD00330', @益金不算入額社外流出) %>
99
+ <%= render_attr('ARD00320', @益金不算入額社外流出) %>
100
100
  </ARD00310>
101
101
  </ARD00280>
102
102
  </ARD00000>
@@ -104,6 +104,7 @@
104
104
  <%= render_attr('ARE00010', 別表四調整所得仮計) %>
105
105
  <%= render_attr('ARE00020', 別表四調整所得仮計留保) %>
106
106
  <ARE00030>
107
+ <%= render_attr('ARE00040', 別表四調整所得仮計社外流出外書) %>
107
108
  <%= render_attr('ARE00050', 別表四調整所得仮計社外流出) %>
108
109
  </ARE00030>
109
110
  </ARE00000>
@@ -111,6 +112,7 @@
111
112
  <%= render_attr('ARZ10010', 別表四調整所得仮計) %>
112
113
  <%= render_attr('ARZ10020', 別表四調整所得仮計留保) %>
113
114
  <ARZ10030>
115
+ <%= render_attr('ARZ10040', 別表四調整所得仮計社外流出外書) %>
114
116
  <%= render_attr('ARZ10050', 別表四調整所得仮計社外流出) %>
115
117
  </ARZ10030>
116
118
  </ARZ10000>
@@ -129,6 +131,7 @@
129
131
  <%= render_attr('ARK00010', 別表四調整所得合計) %>
130
132
  <%= render_attr('ARK00020', 別表四調整所得合計留保) %>
131
133
  <ARK00030>
134
+ <%= render_attr('ARK00040', 別表四調整所得合計社外流出外書) %>
132
135
  <%= render_attr('ARK00050', 別表四調整所得合計社外流出) %>
133
136
  </ARK00030>
134
137
  </ARK00000>
@@ -136,7 +139,8 @@
136
139
  <%= render_attr('ARM00010', 別表四調整所得合計 - @繰越損失管理.deduction) %>
137
140
  <%= render_attr('ARM00020', 別表四調整所得合計留保) %>
138
141
  <ARM00030>
139
- <%= render_attr('ARM00050', 別表四調整所得合計社外流出 - @繰越損失管理.deduction) %>
142
+ <%= render_attr('ARM00040', 別表四調整所得合計社外流出外書 - @繰越損失管理.deduction) %>
143
+ <%= render_attr('ARM00050', 別表四調整所得合計社外流出) %>
140
144
  </ARM00030>
141
145
  </ARM00000>
142
146
  <%# ARN10010 中間申告における繰戻しによる還付に係る災害損失欠損金額の益金算入額 %>
@@ -145,6 +149,7 @@
145
149
  <%= render_attr('ARS00010', @別表四調整所得) %>
146
150
  <%= render_attr('ARS00020', 別表四調整所得合計留保) %>
147
151
  <ARS00030>
152
+ <%= render_attr('ARS00040', 別表四調整所得合計社外流出外書) %>
148
153
  <%= render_attr('ARS00050', 別表四調整所得合計社外流出) %>
149
154
  </ARS00030>
150
155
  </ARS00000>
@@ -154,6 +159,7 @@
154
159
  <%= render_attr('ARS50010', @別表四調整所得) %>
155
160
  <%= render_attr('ARS50020', 別表四調整所得合計留保) %>
156
161
  <ARS50030>
162
+ <%= render_attr('ARS50040', 別表四調整所得合計社外流出外書) %>
157
163
  <%= render_attr('ARS50050', 別表四調整所得合計社外流出) %>
158
164
  </ARS50030>
159
165
  </ARS50000>
@@ -167,7 +173,8 @@
167
173
  <%= render_attr('ARV00010', @別表四調整所得 - @繰越損失管理.deduction) %>
168
174
  <%= render_attr('ARV00020', 別表四調整所得合計留保) %>
169
175
  <ARV00030>
170
- <%= render_attr('ARV00050', 別表四調整所得合計社外流出 - @繰越損失管理.deduction) %>
176
+ <%= render_attr('ARV00040', 別表四調整所得合計社外流出外書 - @繰越損失管理.deduction) %>
177
+ <%= render_attr('ARV00050', 別表四調整所得合計社外流出) %>
171
178
  </ARV00030>
172
179
  </ARV00000>
173
180
  </HOA420>
@@ -1,15 +1,20 @@
1
- <HOI150 page="1" VR="3.0" id="HOI150" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
1
+ <HOI150 page="1" VR="<%= @form_vers['HOI150'] %>" id="HOI150" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
2
2
  <HOB00000>
3
- <% @地代家賃.values.each do |rent| %>
4
- <HOB10000>
5
- <%= render_attr('HOB11000', rent[:rent_type]) %>
6
- <%= render_attr('HOB12000', rent[:rent_purpose]) %>
7
- <%= render_attr('HOB13000', rent[:rent_address]) %>
8
- <%= render_attr('HOB14000', rent[:name]) %>
9
- <%= render_attr('HOB15000', rent[:address]) %>
10
- <%= render_attr('HOB17000', rent[:amount]) %>
11
- <%= render_attr('HOB18000', rent[:note]) %>
12
- </HOB10000>
13
- <% end %>
3
+ <% @地代家賃.values.each do |rent| %>
4
+ <HOB10000>
5
+ <%= render_attr('HOB11000', rent[:rent_type]) %>
6
+ <%= render_attr('HOB12000', rent[:rent_purpose]) %>
7
+ <%= render_attr('HOB13000', rent[:rent_address]) %>
8
+ <% if @form_vers['HOI150'] >= '4.0' && rent[:tax_id] %>
9
+ <HOB27000>
10
+ <%= render_attr('HOB27100', rent[:tax_id]) %>
11
+ </HOB27000>
12
+ <% end %>
13
+ <%= render_attr('HOB14000', rent[:name]) %>
14
+ <%= render_attr('HOB15000', rent[:address]) %>
15
+ <%= render_attr('HOB17000', rent[:amount]) %>
16
+ <%= render_attr('HOB18000', rent[:note]) %>
17
+ </HOB10000>
18
+ <% end %>
14
19
  </HOB00000>
15
20
  </HOI150>
@@ -18,12 +18,7 @@
18
18
  <gen:mm></gen:mm>
19
19
  <gen:dd></gen:dd>
20
20
  </AAA00700>
21
- <AAA00800>
22
- <gen:era><%= gengou(@issue_date) %></gen:era>
23
- <gen:yy><%= wareki(@issue_date) %></gen:yy>
24
- <gen:mm><%= @issue_date.month %></gen:mm>
25
- <gen:dd><%= @issue_date.day %></gen:dd>
26
- </AAA00800>
21
+ <%= render_attr('AAA00800', etax_date(@issue_date)) -%>
27
22
  <AAA00900 idref="ORG1_NAME"></AAA00900>
28
23
  <AAA_HONTEN_ZIP idref="HONTEN_ZIP"></AAA_HONTEN_ZIP>
29
24
  <AAA_HONTEN_ADDR idref="HONTEN_ADDR"></AAA_HONTEN_ADDR>
@@ -40,6 +35,11 @@
40
35
  <AAA_JIGYO_NAME idref="JIGYO_NAME"></AAA_JIGYO_NAME>
41
36
  <AAA_SHIHON idref="SHIHON"></AAA_SHIHON>
42
37
  <AAA_SHIHON3></AAA_SHIHON3>
38
+ <% if @form_vers['R0102AA'] == '250' %>
39
+ <AAA_GASSAN></AAA_GASSAN>
40
+ <AAA_GASSAN2></AAA_GASSAN2>
41
+ <AAA_HOUJIN_KBN></AAA_HOUJIN_KBN>
42
+ <% end %>
43
43
  <AAA_SHIHON4></AAA_SHIHON4>
44
44
  <AAA_SHIHON2><%= 資本金等の額 %></AAA_SHIHON2>
45
45
  <AAA_SHIHON5><%= @資本金準備金 %></AAA_SHIHON5>
@@ -161,10 +161,11 @@
161
161
  <AAH00200><%= 中間還付税額(@確定法人税割, @法人税割中間納付) + 中間還付税額(@所得割, 事業税中間納付) + 中間還付税額(特別法人事業税(@所得割), @地方特別法人事業税中間納付) %></AAH00200>
162
162
  <AAH00400><%= eltax_kouza %></AAH00400>
163
163
  <AAI00100>
164
- <gen:era />
165
- <gen:yy />
166
- <gen:mm />
167
- <gen:dd />
164
+ <% if @kessanbi -%>
165
+ <%= etax_date(@kessanbi) %>
166
+ <% else -%>
167
+ <gen:era /><gen:yy /><gen:mm /><gen:dd />
168
+ <% end -%>
168
169
  </AAI00100>
169
170
  <AAI00900>
170
171
  <gen:era />
@@ -198,4 +199,10 @@
198
199
  <AAI00800>2</AAI00800>
199
200
  <AAJ_DAIRI_NAME></AAJ_DAIRI_NAME>
200
201
  <AAJ_DAIRI_TEL_NUM></AAJ_DAIRI_TEL_NUM>
202
+ <% if @form_vers['R0102AA'] == '250' %>
203
+ <AAL00100></AAL00100>
204
+ <AAL00200></AAL00200>
205
+ <AAL00300></AAL00300>
206
+ <AAL00400></AAL00400>
207
+ <% end %>
201
208
  </R0102AA<%= @form_vers['R0102AA'] %>>
@@ -69,11 +69,18 @@
69
69
  <%= render_attr('IAE04300', gaikyo_config('software_kaikei') ? '<kubun_CD>1</kubun_CD>' : nil) %>
70
70
  <%= render_attr('IAE04500', gaikyo_config('software_kaikei')) %>
71
71
  <%= render_attr('IAE04600', gaikyo_config('software_mail')) %>
72
+ <% if @form_vers['HOK010'] >= '7.0' %>
73
+ <IAE07910>
74
+ <%= render_attr('IAE07920', gaikyo_config('dencho_good') ? '<kubun_CD>1</kubun_CD>' : nil) %>
75
+ <%= render_attr('IAE07930', gaikyo_config('dencho_generic') ? '<kubun_CD>1</kubun_CD>' : nil) %>
76
+ <%= render_attr('IAE07940', gaikyo_config('dencho_scanner') ? '<kubun_CD>1</kubun_CD>' : nil) %>
77
+ </IAE07910>
78
+ <% end %>
72
79
  <% if @form_vers['HOK010'] < '7.0' %>
73
- <IAE07000>
74
- <%= render_attr('IAE07700', gaikyo_config('data_cloud') ? '<kubun_CD>1</kubun_CD>' : nil) %>
75
- <%= render_attr('IAE07800', gaikyo_config('data_media') ? '<kubun_CD>1</kubun_CD>' : nil) %>
76
- <%= render_attr('IAE07900', gaikyo_config('data_server') ? '<kubun_CD>1</kubun_CD>' : nil) %>
80
+ <IAE07000>
81
+ <%= render_attr('IAE07700', gaikyo_config('data_cloud') ? '<kubun_CD>1</kubun_CD>' : nil) %>
82
+ <%= render_attr('IAE07800', gaikyo_config('data_media') ? '<kubun_CD>1</kubun_CD>' : nil) %>
83
+ <%= render_attr('IAE07900', gaikyo_config('data_server') ? '<kubun_CD>1</kubun_CD>' : nil) %>
77
84
  </IAE07000>
78
85
  <% end %>
79
86
  </IAE00000>
@@ -1,7 +1,12 @@
1
- <HOI090 page="1" VR="4.0" id="HOI090" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
1
+ <HOI090 page="1" VR="<%= @form_vers['HOI090'] %>" id="HOI090" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
2
2
  <% @買掛金.values.each do |payable| %>
3
3
  <HIB00000>
4
4
  <%= render_attr('HIB00100', payable[:payable_type]) %>
5
+ <% if @form_vers['HOI090'] >= '5.0' && payable[:tax_id] -%>
6
+ <HIB00500>
7
+ <%= render_attr('HIB00510', payable[:tax_id]) %>
8
+ </HIB00500>
9
+ <% end -%>
5
10
  <HIB00200>
6
11
  <%= render_attr('HIB00210', payable[:name]) %>
7
12
  <%= render_attr('HIB00220', payable[:address]) %>
@@ -1,4 +1,4 @@
1
- <HOI100 page="1" VR="5.0" id="HOI100" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
1
+ <HOI100 page="1" VR="<%= @form_vers['HOI100'] %>" id="HOI100" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
2
2
  <HJB00000>
3
3
  <HJB01000>
4
4
  <%= render_attr('HJB01100', '預り金') %>
@@ -7,6 +7,9 @@
7
7
  <ILA00050><%= it_part_config('daihyo_adr') %></ILA00050>
8
8
  <ILA00060><kubun_CD>1</kubun_CD></ILA00060>
9
9
  </ILA00010>
10
+ <ILA00310>
11
+ <%= render_attr('ILA00320', @役員報酬) %>
12
+ </ILA00310>
10
13
  </ILA00000>
11
14
  <ILB00000>
12
15
  <ILB00010>
@@ -101,6 +101,7 @@ module Luca #:nodoc:
101
101
  metadata = uchiwake_account_config(k).first
102
102
  if metadata && metadata['name']
103
103
  h[k][:name] = metadata['name']
104
+ h[k][:tax_id] = metadata['tax_id']&.to_s&.sub(/T/, '')
104
105
  h[k][:payable_type] = self.class.dict.dig(k[0..2], :label)
105
106
  h[k][:address] = metadata['address']
106
107
  h[k][:note] = metadata['note']
@@ -118,7 +119,10 @@ module Luca #:nodoc:
118
119
 
119
120
  def 仮受金内訳
120
121
  @源泉給与 = readable(@bs_data.dig('5191') || 0)
121
- @源泉報酬 = readable(@bs_data.dig('5193') || 0)
122
+ @源泉報酬 = [
123
+ readable(@bs_data.dig('5193') || 0),
124
+ readable(@bs_data.dig('5194') || 0)
125
+ ].sum
122
126
  render_erb(search_template('kariuke-meisai.xml.erb'))
123
127
  end
124
128
 
@@ -182,6 +186,7 @@ module Luca #:nodoc:
182
186
  metadata = uchiwake_account_config(k).first
183
187
  if metadata && metadata['name']
184
188
  h[k][:name] = metadata['name']
189
+ h[k][:tax_id] = metadata['tax_id']&.to_s&.sub(/T/, '')
185
190
  h[k][:address] = metadata['address']
186
191
  h[k][:rent_type] = metadata['rent_type'] || '家賃'
187
192
  h[k][:rent_purpose] = metadata['rent_purpose']
@@ -15,22 +15,32 @@ module Luca
15
15
  listed_amount = 0
16
16
  encoding ||= 'SJIS'
17
17
  customers, total = list
18
+ format_ver = @date > Date.new(2024, 3, 1) ? 4 : 3
18
19
  str = CSV.generate(String.new, headers: false, col_sep: ',', encoding: encoding) do |f|
19
20
  customers.map do |c|
20
21
  amount = readable(c['unsettled'])
21
22
  listed_amount += amount
22
- f << ['3', '0', '売掛金', c['customer'], c['address'], amount, nil ]
23
+ if format_ver >= 4
24
+ address = c['tax_id'] ? nil : c['address']
25
+ f << ['3', '0', '売掛金', c['tax_id']&.to_i, nil, c['customer'], address, amount, nil ]
26
+ else
27
+ f << ['3', '0', '売掛金', c['customer'], c['address'], amount, nil ]
28
+ end
23
29
  end
24
- if total - listed_amount > 0
30
+ if format_ver >= 4
31
+ f << ['3', '0', '売掛金', nil, nil, 'その他', nil, total - listed_amount, nil ]
32
+ f << ['3', '1', nil, nil, nil, nil, nil, total, nil ]
33
+ else
25
34
  f << ['3', '0', '売掛金', 'その他', nil, total - listed_amount, nil ]
35
+ f << ['3', '1', nil, nil, nil, total, nil ]
26
36
  end
27
- f << ['3', '1', nil, nil, nil, total, nil ]
28
37
  end
29
- File.open('HOI030_3.0.csv', 'w') { |f| f.write(str) }
38
+ STDERR.puts "Writing HOI030_#{format_ver}.0.csv..."
39
+ File.open("HOI030_#{format_ver}.0.csv", 'w') { |f| f.write(str) }
30
40
  end
31
41
 
32
42
  def list
33
- customers = self.class.report(@date, detail: true)
43
+ customers = self.class.report(@date, detail: true, due: true)
34
44
  .sort_by { |customer| customer['unsettled'] }
35
45
  .reverse
36
46
  total = customers.inject(0) { |sum, customer| sum + customer['unsettled'] }
data/lib/luca/jp/util.rb CHANGED
@@ -63,6 +63,8 @@ module Luca
63
63
  end
64
64
 
65
65
  def etax_date(date)
66
+ return nil if date.nil?
67
+
66
68
  "<gen:era>#{gengou(date)}</gen:era><gen:yy>#{wareki(date)}</gen:yy><gen:mm>#{date.month}</gen:mm><gen:dd>#{date.day}</gen:dd>"
67
69
  end
68
70
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Luca
4
4
  module Jp
5
- VERSION = '0.19.0'
5
+ VERSION = '0.20.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: luca-jp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.19.0
4
+ version: 0.20.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: 2024-04-11 00:00:00.000000000 Z
11
+ date: 2025-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lucabook
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.5.4
19
+ version: 0.5.6
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.5.4
26
+ version: 0.5.6
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: lucadeal
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.5.5
33
+ version: 0.5.8
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 0.5.5
40
+ version: 0.5.8
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: lucasalary
43
43
  requirement: !ruby/object:Gem::Requirement