luca-jp 0.16.3 → 0.17.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: fa9b6007a2a529b1d17eaca40694c831f8c1be63343571c5c3d7e926b7f52949
4
- data.tar.gz: cb198bc844cc2d905ac9aab9c6bb35693f0b16de1d57331aac58c31c5f5a2300
3
+ metadata.gz: 1eb3cc018828ad1a0e466b86bac2280a7db7661118c6a47748bfa2feae045824
4
+ data.tar.gz: '080aef29106f45e7a0188f646f8098d047decd6bc4adc70453d36ec2ae147f22'
5
5
  SHA512:
6
- metadata.gz: ef9754c6618cfe2eaeb27f0e14a0a6f3b302853e73f4138128a23b1e688a33a715a11cef549ac98f942e759430ea11f0af2e134875590bcea4aba497a0a23f36
7
- data.tar.gz: 56827cd19f691db069c42503ee2175477763f164abcdfbc46dea99ae3f942cc025c47aed8abf28b9f7f546a2f7bec709e915f10bebecefbb17df7a23895093ea
6
+ metadata.gz: 0ba0df576a6bb63923a33a0dc124a3a3539a1bda7346fa428228304fc371cc0218f3e855d18dbbc935d7a7352ace49f7ef012c46fe04f9abcca0b26b3af59217
7
+ data.tar.gz: e10900edeed0d1596fcd7f02225d4e49fef3f9656ece12604d631bf5c788fd14e011cf41c5cf0ff043fee02f3171156c109d86a2e6bc70e819f0d7fdec92e42e
data/exe/luca-jp CHANGED
@@ -6,6 +6,7 @@ require 'luca/jp'
6
6
  require 'luca_salary/jp_payreport'
7
7
  require 'luca_cmd'
8
8
  require 'luca_support/const'
9
+ require 'yaml'
9
10
 
10
11
  EXT_CONF = 'config-lucajp.yml'
11
12
 
@@ -19,17 +20,19 @@ class LucaCmd
19
20
  end
20
21
 
21
22
  def self.houjinzei(args, params)
23
+ ext_config = params[:extra] ? YAML.load_file(params[:extra]) : nil
22
24
  if params[:export]
23
- Luca::Jp::Aoiro.range(*auto_range(args, params)).export_json
25
+ puts Luca::Jp::Aoiro.range(*auto_range(args, params)).export_json(ext_config: ext_config)
24
26
  else
25
- puts Luca::Jp::Aoiro.range(*auto_range(args, params)).kani
27
+ puts Luca::Jp::Aoiro.range(*auto_range(args, params)).kani(ext_config: ext_config)
26
28
  end
27
29
  end
28
30
 
29
31
  def self.chihouzei(args, params)
32
+ ext_config = params[:extra] ? YAML.load_file(params[:extra]) : nil
30
33
  if params[:export]
31
34
  accounts = Luca::Jp::Util.eltax_config('reports').map do |report|
32
- Luca::Jp::Chihouzei.range(*auto_range(args, params)).export_json(report)
35
+ Luca::Jp::Chihouzei.range(*auto_range(args, params)).export_json(report, ext_config: ext_config)
33
36
  end
34
37
  puts JSON.dump(accounts)
35
38
  else
@@ -76,6 +79,7 @@ case cmd
76
79
  when 'h', /hou?jinzei/
77
80
  OptionParser.new do |opt|
78
81
  opt.banner = 'Usage: luca-jp h|houjinzei [options] [yyyy mm yyyy mm]'
82
+ opt.on('-x VAL', 'extra config') { |v| params[:extra] = v }
79
83
  opt.on('--export', 'export json') { |_v| params[:export] = true }
80
84
  opt.on('--lastyear', 'report on last Financial year') { |_v| params[:lastyear] = true }
81
85
  args = opt.parse!(ARGV)
@@ -96,6 +100,7 @@ when 's', /s[yh]ou?hizei/
96
100
  when 'c', /chihou?zei/
97
101
  OptionParser.new do |opt|
98
102
  opt.banner = 'Usage: luca-jp c|chihouzei [options] [yyyy mm yyyy mm]'
103
+ opt.on('-x VAL', 'extra config') { |v| params[:extra] = v }
99
104
  opt.on('--export', 'export json') { |_v| params[:export] = true }
100
105
  opt.on('--lastyear', 'report on last Financial year') { |_v| params[:lastyear] = true }
101
106
  args = opt.parse!(ARGV)
data/lib/luca/jp/aoiro.rb CHANGED
@@ -20,7 +20,7 @@ module Luca
20
20
  @dirname = 'journals'
21
21
  @record_type = 'raw'
22
22
 
23
- def kani(export: false)
23
+ def kani(ext_config: nil, export: false)
24
24
  set_pl(4)
25
25
  set_bs(4)
26
26
  @issue_date = Date.today
@@ -28,12 +28,14 @@ module Luca
28
28
  @software = 'LucaJp'
29
29
  @shinkoku_kbn = '30' # 確定申告
30
30
 
31
+ 別表四所得調整(ext_config)
31
32
  @税額 = 税額計算
32
33
  @確定法人税額 = @税額.dig(:houjin, :kokuzei)
33
34
  @法人税額 = 中小企業の軽減税額 + 一般区分の税額
34
35
  @地方法人税課税標準 = (@法人税額 / 1000).floor * 1000
35
36
  @地方法人税額 = 地方法人税額(@地方法人税課税標準)
36
37
  @確定地方法人税額 = @税額.dig(:houjin, :chihou)
38
+
37
39
  @法人税中間納付 = prepaid_tax('1851')
38
40
  @地方法人税中間納付 = prepaid_tax('1852')
39
41
 
@@ -63,8 +65,6 @@ module Luca
63
65
  @都道府県民税期中増, @都道府県民税期中減 = 未納都道府県民税期中増減
64
66
  @市民税期中増, @市民税期中減 = 未納市民税期中増減
65
67
  @事業税期中増, @事業税期中減 = 未納事業税期中増減
66
- @事業税中間納付 = ['1854', '1855', '1856', '1857', '1858']
67
- .map{ |k| prepaid_tax(k) }.compact.sum
68
68
  @翌期還付法人税 = 中間還付税額(@確定法人税額 + @確定地方法人税額, @法人税中間納付 + @地方法人税中間納付)
69
69
  @概況売上 = gaikyo('A0')
70
70
  @form_sec = [
@@ -85,35 +85,35 @@ module Luca
85
85
  end
86
86
  end
87
87
 
88
- def export_json
89
- dat = kani(export: true)
90
- [].tap do |res|
91
- item = {}
92
- item['date'] = @end_date
93
- item['debit'] = []
94
- item['credit'] = []
95
- if dat[:kokuzei][:chukan] > 0
96
- item['credit'] << { 'label' => '仮払法人税', 'amount' => dat[:kokuzei][:chukan] }
97
- end
98
- if dat[:kokuzei][:chukan] > dat[:kokuzei][:zeigaku]
99
- item['debit'] << { 'label' => '未収法人税', 'amount' => dat[:kokuzei][:chukan] - dat[:kokuzei][:zeigaku] }
100
- else
101
- item['credit'] << { 'label' => '未払法人税', 'amount' => dat[:kokuzei][:zeigaku] - dat[:kokuzei][:chukan] }
102
- end
103
- item['debit'] << { 'label' => '法人税、住民税及び事業税', 'amount' => dat[:kokuzei][:zeigaku] } if dat[:kokuzei][:zeigaku] > 0
104
- if dat[:chihou][:chukan] > 0
105
- item['credit'] << { 'label' => '仮払法人税(地方)', 'amount' => dat[:chihou][:chukan] }
106
- end
107
- if dat[:chihou][:chukan] > dat[:chihou][:zeigaku]
108
- item['debit'] << { 'label' => '未収法人税', 'amount' => dat[:chihou][:chukan] - dat[:chihou][:zeigaku] }
109
- else
110
- item['credit'] << { 'label' => '未払法人税', 'amount' => dat[:chihou][:zeigaku] - dat[:chihou][:chukan] }
111
- end
112
- item['debit'] << { 'label' => '法人税、住民税及び事業税', 'amount' => dat[:chihou][:zeigaku] } if dat[:chihou][:zeigaku] > 0
113
- item['x-editor'] = 'LucaJp'
114
- res << item
115
- puts JSON.dump(res)
88
+ def export_json(ext_config: nil, raw: false)
89
+ dat = kani(export: true, ext_config: ext_config)
90
+ res = []
91
+ item = {}
92
+ item['date'] = @end_date
93
+ item['debit'] = []
94
+ item['credit'] = []
95
+ if dat[:kokuzei][:chukan] > 0
96
+ item['credit'] << { 'label' => '仮払法人税', 'amount' => dat[:kokuzei][:chukan] }
97
+ end
98
+ if dat[:kokuzei][:chukan] > dat[:kokuzei][:zeigaku]
99
+ item['debit'] << { 'label' => '未収法人税', 'amount' => dat[:kokuzei][:chukan] - dat[:kokuzei][:zeigaku] }
100
+ else
101
+ item['credit'] << { 'label' => '未払法人税', 'amount' => dat[:kokuzei][:zeigaku] - dat[:kokuzei][:chukan] }
102
+ end
103
+ item['debit'] << { 'label' => '法人税、住民税及び事業税', 'amount' => dat[:kokuzei][:zeigaku] }
104
+ if dat[:chihou][:chukan] > 0
105
+ item['credit'] << { 'label' => '仮払法人税(地方)', 'amount' => dat[:chihou][:chukan] }
116
106
  end
107
+ if dat[:chihou][:chukan] > dat[:chihou][:zeigaku]
108
+ item['debit'] << { 'label' => '未収法人税', 'amount' => dat[:chihou][:chukan] - dat[:chihou][:zeigaku] }
109
+ else
110
+ item['credit'] << { 'label' => '未払法人税', 'amount' => dat[:chihou][:zeigaku] - dat[:chihou][:chukan] }
111
+ end
112
+ item['debit'] << { 'label' => '法人税、住民税及び事業税', 'amount' => dat[:chihou][:zeigaku] } if dat[:chihou][:zeigaku] > 0
113
+ item['x-editor'] = 'LucaJp'
114
+ res << item
115
+
116
+ raw ? res : JSON.dump(res)
117
117
  end
118
118
 
119
119
  def 別表一
@@ -130,28 +130,74 @@ module Luca
130
130
  render_erb(search_template('beppyo2.xml.erb'))
131
131
  end
132
132
 
133
+ # NOTE: 別表四所得調整に依存
133
134
  def 別表四簡易
134
135
  @当期純損益 = readable(@pl_data.dig('HA'))
135
- @法人税等 = readable(@pl_data.dig('H0'))
136
- _, @納付事業税 = 未納事業税期中増減
137
- @当期還付事業税 = 還付事業税
138
- @翌期還付事業税 = 中間還付税額(確定事業税, @事業税中間納付)
139
- @別表四調整所得 = @当期純損益 + @法人税等 - @納付事業税 - @翌期還付事業税 + @当期還付事業税
140
136
 
141
- @当期還付法人税 = refund_tax('1502')
142
- @当期還付都道府県住民税 = refund_tax('1503')
143
- @翌期還付都道府県住民税 = readable(@bs_data['1503']) || 0
144
- @当期還付市民税 = refund_tax('1505')
145
- @翌期還付市民税 = readable(@bs_data['1505']) || 0
146
- @事業税期首残高 = 期首未納事業税 > 0 ? 期首未納事業税 : (@当期還付事業税 * -1)
147
- @仮払税金 = [@翌期還付法人税, @翌期還付都道府県住民税, @翌期還付事業税, @翌期還付市民税]
148
- .compact.sum
137
+ ### 損金不算入額の計算
138
+
139
+ @損金経理をした法人税及び地方法人税 = 法人税損金納付額
140
+ @損金経理をした道府県民税及び市町村民税 = [
141
+ 都道府県民税損金納付,
142
+ 市民税損金納付,
143
+ ].compact.sum
144
+ @損金経理をした納税充当金 = 当期納税充当金
145
+ @損金不算入額 = [
146
+ @損金不算入額税額未確定,
147
+ @損金経理をした法人税及び地方法人税,
148
+ @損金経理をした道府県民税及び市町村民税,
149
+ @損金経理をした納税充当金,
150
+ ].compact.sum
151
+ @損金不算入額留保 = [
152
+ @減価償却の償却超過額,
153
+ @当期還付事業税,
154
+ @損金経理をした法人税及び地方法人税,
155
+ @損金経理をした道府県民税及び市町村民税,
156
+ @損金経理をした納税充当金,
157
+ ].compact.sum
158
+ @損金不算入額社外流出 = [
159
+ @役員給与の損金不算入額,
160
+ @交際費等の損金不算入額,
161
+ # TODO: 附帯税
162
+ ].compact.sum
163
+
164
+ ### 益金不算入額の計算
165
+ STDERR.puts "別表八「受取配当等の益金算入に関する明細書」の追加作成が必要" if @受取配当金の益金不算入額
166
+
167
+ @翌期還付事業税 = ['1504', '1854', '1855', '1856', '1857', '1858']
168
+ .map{ |code| readable(@bs_data[code]) }
169
+ .compact.sum
170
+ @益金不算入額 = [
171
+ @益金不算入額税額未確定,
172
+ # NOTE: 確定税額は会計上も費用認識しているため相殺
173
+ (@事業税中間納付 * -1),
174
+ @翌期還付事業税
175
+ ].compact.sum
176
+ @益金不算入額留保 = [
177
+ @納付事業税,
178
+ @減価償却超過額の当期認容額,
179
+ @翌期還付事業税
180
+ ].compact.sum
181
+ @益金不算入額社外流出 = [
182
+ # TODO: 欠損金繰戻還付、欠損金当期控除
183
+ @受取配当金の益金不算入額,
184
+ @受贈益の益金不算入額,
185
+ ].compact.sum
186
+ @別表四調整所得留保 = @当期純損益 + @損金不算入額留保 - @益金不算入額留保
187
+ @別表四調整所得社外流出 = @当期純損益 + @損金不算入額社外流出 - @益金不算入額社外流出
188
+ # TODO: 寄付金、所得税額控除、外国法人税の損金不算入調整
149
189
 
150
190
  render_erb(search_template('beppyo4.xml.erb'))
151
191
  end
152
192
 
153
193
  def 別表五一
154
- @期首資本金 = readable(@start_balance.dig('911'))
194
+ @当期還付法人税 = refund_tax('1502')
195
+ @当期還付都道府県住民税 = refund_tax('1503')
196
+ @当期還付市民税 = refund_tax('1505')
197
+ @翌期還付都道府県住民税 = readable(@bs_data['1503']) || 0
198
+ @翌期還付市民税 = readable(@bs_data['1505']) || 0
199
+
200
+ @期首資本金 = readable(@start_balance.dig('911')) || 0
155
201
  @資本金期中減, @資本金期中増 = 純資産期中増減('911')
156
202
  @期首資本準備金, @期末資本準備金 = 期首期末残高('9131')
157
203
  @資本準備金期中減, @資本準備金期中増 = 純資産期中増減('9131')
@@ -169,6 +215,7 @@ module Luca
169
215
  @当期還付消費税 = refund_tax('1501')
170
216
  @消費税期首残高 = 期首未納消費税 > 0 ? 期首未納消費税 : (@当期還付消費税 * -1)
171
217
  @翌期還付消費税 = 中間還付税額(@消費税期中増, @消費税中間納付額)
218
+ @事業税期首残高 = 期首未納事業税 > 0 ? 期首未納事業税 : (@当期還付事業税 * -1)
172
219
  @その他事業税 = 租税公課 - @消費税期中増
173
220
  render_erb(search_template('beppyo52.xml.erb'))
174
221
  end
@@ -374,21 +421,18 @@ module Luca
374
421
  "<ARC00220><ARC00230>仮払事業税消却(未収計上した還付事業税)</ARC00230>#{render_attr('ARC00240', @当期還付事業税)}#{render_attr('ARC00250', @当期還付事業税)}</ARC00220>\n"
375
422
  end
376
423
 
377
- def 別表五一仮払税金
378
- 未収仮払税金 = ['1502', '1503', '1504', '1505']
379
- .map { |k| @start_balance[k] }.compact.sum
380
- 還付税金 = [@当期還付法人税, @当期還付都道府県住民税, @当期還付事業税, @当期還付市民税].compact.sum
381
- return '' if 未収仮払税金 == 0 && 還付税金 == 0 && @仮払税金 == 0
424
+ def 別表五一仮払事業税
425
+ return '' if @当期還付事業税 == 0 && @翌期還付事業税 == 0
382
426
 
383
427
  %Q(<ICB00140>
384
- #{render_attr('ICB00150', '仮払税金')}
385
- #{render_attr('ICB00160', readable(未収仮払税金) * -1)}
386
- <ICB00170>
387
- #{render_attr('ICB00190', readable(還付税金) * -1)}
388
- #{render_attr('ICB00200', @仮払税金 * -1)}
389
- </ICB00170>
390
- #{render_attr('ICB00210', @仮払税金 * -1)}
391
- </ICB00140>)
428
+ #{render_attr('ICB00150', '仮払事業税')}
429
+ #{render_attr('ICB00160', @当期還付事業税 * -1)}
430
+ <ICB00170>
431
+ #{render_attr('ICB00190', @当期還付事業税 * -1)}
432
+ #{render_attr('ICB00200', @翌期還付事業税 * -1)}
433
+ </ICB00170>
434
+ #{render_attr('ICB00210', @翌期還付事業税 * -1)}
435
+ </ICB00140>)
392
436
  end
393
437
 
394
438
  def 別表五一還付法人税
@@ -448,7 +492,12 @@ module Luca
448
492
  end
449
493
 
450
494
  def 当期納税充当金
451
- readable(@pl_data.dig('H0')) - [法人税損金納付額, 都道府県民税損金納付, 市民税損金納付, 事業税損金納付].compact.sum
495
+ r = credit_amount('515', @start_date.year, @start_date.month, @end_date.year, @end_date.month)
496
+ readable(r)
497
+ end
498
+
499
+ def 期末納税充当金
500
+ readable(@bs_data.dig('515')) || 0
452
501
  end
453
502
 
454
503
  def 期首未納法人税
@@ -465,6 +514,7 @@ module Luca
465
514
  end
466
515
 
467
516
  # 中間納付した金額のうち税額とならず、還付されるべき額
517
+ # 決算後において、未収法人税・仮払法人税・仮払法人税(地方)の合計金額の想定
468
518
  #
469
519
  def 法人税仮払納付額
470
520
  [(@法人税中間納付 + @地方法人税中間納付 - @確定法人税額 - @確定地方法人税額), 0].max
@@ -489,8 +539,15 @@ module Luca
489
539
  [確定都道府県住民税, readable(r)]
490
540
  end
491
541
 
542
+ # 決算後において、仮払地方税法人税割・仮払地方税均等割の金額は
543
+ # 本来都道府県と市区町村に区分すべきだが、全額市民税とみなしている
544
+ #
492
545
  def 都道府県民税仮払納付
493
- readable(@bs_data['1503']) || 0
546
+ [
547
+ readable(@bs_data['1503']),
548
+ readable(@bs_data['1859']),
549
+ readable(@bs_data['185A']),
550
+ ].compact.sum
494
551
  end
495
552
 
496
553
  # 期末納付済金額のうち税額として確定したもの
@@ -499,6 +556,10 @@ module Luca
499
556
  @都道府県民税均等割中間納付 + @都道府県民税法人税割中間納付 - 都道府県民税仮払納付
500
557
  end
501
558
 
559
+ def 期末未納都道府県民税
560
+ readable(@bs_data.dig('5153')) || 0
561
+ end
562
+
502
563
  def 確定市民税
503
564
  readable(@pl_data['H113']) || 0
504
565
  end
@@ -517,7 +578,11 @@ module Luca
517
578
  end
518
579
 
519
580
  def 市民税仮払納付
520
- readable(@bs_data['1505']) || 0
581
+ [
582
+ readable(@bs_data['1505']),
583
+ readable(@bs_data['185D']),
584
+ readable(@bs_data['185E']),
585
+ ].compact.sum
521
586
  end
522
587
 
523
588
  # 期末納付済金額のうち税額として確定したもの
@@ -534,8 +599,18 @@ module Luca
534
599
  [@事業税中間納付, 確定事業税].min
535
600
  end
536
601
 
602
+ def 期末未納事業税
603
+ readable(@bs_data['5152']) || 0
604
+ end
605
+
537
606
  def 別表五一期首差引金額
538
- [期首繰越損益, 期首納税充当金].compact.sum - [
607
+ [
608
+ @当期還付法人税,
609
+ @当期還付都道府県住民税,
610
+ @当期還付市民税,
611
+ 期首繰越損益,
612
+ 期首納税充当金
613
+ ].compact.sum - [
539
614
  期首未納法人税,
540
615
  期首未納都道府県民税,
541
616
  期首未納市民税,
@@ -544,16 +619,28 @@ module Luca
544
619
  end
545
620
 
546
621
  def 別表五一期末差引金額
547
- [期末繰越損益, 当期納税充当金].compact.sum - [
622
+ [
623
+ @翌期還付法人税,
624
+ @翌期還付都道府県住民税,
625
+ @翌期還付市民税,
626
+ 期末繰越損益,
627
+ 期末納税充当金
628
+ ].compact.sum - [
548
629
  期末未納法人税,
549
- 確定都道府県住民税,
550
- 確定市民税,
630
+ 期末未納都道府県民税,
631
+ 期末未納市民税,
551
632
  @翌期還付事業税
552
633
  ].compact.sum
553
634
  end
554
635
 
555
636
  def 別表五一期中減差引金額
556
- [期首繰越損益, 納税充当金期中減].compact.sum - [
637
+ [
638
+ @当期還付法人税,
639
+ @当期還付都道府県住民税,
640
+ @当期還付市民税,
641
+ 期首繰越損益,
642
+ 納税充当金期中減
643
+ ].compact.sum - [
557
644
  @法人税期中減,
558
645
  @都道府県民税期中減,
559
646
  @市民税期中減,
@@ -566,11 +653,20 @@ module Luca
566
653
  end
567
654
 
568
655
  def 別表五一期中増差引金額
569
- [期末繰越損益, 納付税額(確定事業税, @事業税中間納付)].compact.sum - [
656
+ [
657
+ @翌期還付法人税,
658
+ @翌期還付都道府県住民税,
659
+ @翌期還付市民税,
660
+ 期末繰越損益,
661
+ 期末納税充当金
662
+ ].compact.sum - [
570
663
  @法人税中間納付,
571
664
  @地方法人税中間納付,
665
+ 期末未納法人税,
572
666
  @都道府県民税中間納付,
667
+ 期末未納都道府県民税,
573
668
  @市民税中間納付,
669
+ 期末未納市民税,
574
670
  @翌期還付事業税
575
671
  ].compact.sum
576
672
  end
@@ -701,12 +797,14 @@ module Luca
701
797
  end
702
798
 
703
799
  def proc_version
704
- if @end_date >= Date.parse('2022-4-1')
705
- { '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' }
800
+ if @end_date >= Date.parse('2023-4-1')
801
+ { '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' }
802
+ elsif @end_date >= Date.parse('2022-4-1')
803
+ { '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' }
706
804
  elsif @end_date >= Date.parse('2021-4-1')
707
- { 'proc' => '21.0.2', 'HOA112' => '3.1', 'HOA116' => '2.0', 'HOA420' => '20.0', 'HOA511' => '13.0', 'HOA522' => '7.0', 'HOB710' => '11.0', 'HOE200' => '13.0', 'HOE990' => '5.0', 'HOK010' => '6.0' }
805
+ { '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' }
708
806
  else
709
- { 'proc' => '20.0.2', 'HOA112' => '2.0', 'HOA116' => '1.0', 'HOA420' => '19.0', 'HOA511' => '13.0', 'HOA522' => '6.0', 'HOB710' => '11.0', 'HOE200' => '13.0', 'HOE990' => '5.0', 'HOK010' => '5.0' }
807
+ { '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' }
710
808
  end
711
809
  end
712
810
 
@@ -17,7 +17,7 @@ module Luca
17
17
  @dirname = 'journals'
18
18
  @record_type = 'raw'
19
19
 
20
- def kani(report_cfg, export: false)
20
+ def kani(report_cfg, export: false, ext_config: nil)
21
21
  set_pl(4)
22
22
  set_bs(4)
23
23
  @issue_date = Date.today
@@ -32,28 +32,25 @@ module Luca
32
32
  @shotoku401 = report_cfg['shotoku401']
33
33
  @shotoku801 = report_cfg['shotoku801']
34
34
 
35
+ 別表四所得調整(ext_config)
35
36
  @税額 = 税額計算
36
37
  jichitai = @report_category == 'city' ? :shimin : :kenmin
37
38
  @均等割 = report_cfg['kintouwari'] || @税額.dig(jichitai, :kintou)
38
39
  @確定法人税割 = @税額.dig(jichitai, :houjinzei)
39
40
  @地方特別法人事業税中間納付 = prepaid_tax('1854', @jimusho_name)
40
41
  @所得割中間納付 = prepaid_tax('1855', @jimusho_name)
41
- @法人税割中間納付 = prepaid_tax('1859', @jimusho_name)
42
- @均等割中間納付 = prepaid_tax('185A', @jimusho_name)
42
+ @法人税割中間納付 = prepaid_tax(
43
+ @report_category == 'city' ? '185D' :'1859',
44
+ @jimusho_name
45
+ )
46
+ @均等割中間納付 = prepaid_tax(
47
+ @report_category == 'city' ? '185E' : '185A',
48
+ @jimusho_name
49
+ )
43
50
  @所得割 = @税額.dig(:kenmin, :shotoku)
44
51
  if export
45
52
  {
46
53
  customer: @jimusho_name,
47
- jigyouzei: {
48
- shotoku: {
49
- zeigaku: @所得割,
50
- chukan: @所得割中間納付
51
- },
52
- tokubetsu: {
53
- zeigaku: @税額.dig(:kenmin, :tokubetsu),
54
- chukan: @地方特別法人事業税中間納付
55
- },
56
- },
57
54
  juminzei: {
58
55
  kinto: {
59
56
  zeigaku: @均等割,
@@ -64,7 +61,20 @@ module Luca
64
61
  chukan: @法人税割中間納付
65
62
  }
66
63
  }
67
- }
64
+ }.tap do |record|
65
+ if @report_category != 'city'
66
+ record[:jigyouzei] = {
67
+ shotoku: {
68
+ zeigaku: @所得割,
69
+ chukan: @所得割中間納付
70
+ },
71
+ tokubetsu: {
72
+ zeigaku: @税額.dig(:kenmin, :tokubetsu),
73
+ chukan: @地方特別法人事業税中間納付
74
+ },
75
+ }
76
+ end
77
+ end
68
78
  else
69
79
  @company = CGI.escapeHTML(config.dig('company', 'name'))
70
80
  @form_vers = proc_version
@@ -99,8 +109,8 @@ module Luca
99
109
  end
100
110
  end
101
111
 
102
- def export_json(report_cfg)
103
- records = kani(report_cfg, export: true)
112
+ def export_json(report_cfg, ext_config: nil)
113
+ records = kani(report_cfg, export: true, ext_config: ext_config)
104
114
  label = @report_category == 'city' ? '市町村住民税' : '都道府県住民税'
105
115
  {}.tap do |item|
106
116
  item['date'] = @end_date
@@ -109,7 +119,7 @@ module Luca
109
119
  unless @report_category == 'city'
110
120
  records[:jigyouzei].each do |k, dat|
111
121
  if dat[:chukan] > 0
112
- item['credit'] << { 'label' => karibarai_label(k), 'amount' => dat[:chukan] }
122
+ item['credit'] << { 'label' => karibarai_label(k, @report_category), 'amount' => dat[:chukan] }
113
123
  end
114
124
  if dat[:chukan] > dat[:zeigaku]
115
125
  item['debit'] << { 'label' => '未収地方事業税', 'amount' => dat[:chukan] - dat[:zeigaku] }
@@ -121,7 +131,7 @@ module Luca
121
131
  end
122
132
  records[:juminzei].each do |k, dat|
123
133
  if dat[:chukan] > 0
124
- item['credit'] << { 'label' => karibarai_label(k), 'amount' => dat[:chukan] }
134
+ item['credit'] << { 'label' => karibarai_label(k, @report_category), 'amount' => dat[:chukan] }
125
135
  end
126
136
  if dat[:chukan] > dat[:zeigaku]
127
137
  item['debit'] << { 'label' => "未収#{label}", 'amount' => dat[:chukan] - dat[:zeigaku] }
@@ -229,22 +239,31 @@ module Luca
229
239
  "<FORM_ATTR><FORM_ID>#{code}</FORM_ID><FORM_NAME>#{name}</FORM_NAME><FORM_FILE_NAME></FORM_FILE_NAME><FORM_XSL_NAME></FORM_XSL_NAME></FORM_ATTR>"
230
240
  end
231
241
 
232
- def karibarai_label(key)
233
- case key
234
- when :tokubetsu
235
- '仮払地方税特別法人事業税'
236
- when :shotoku
237
- '仮払地方税所得割'
238
- when :syunyu
239
- '仮払地方税収入割'
240
- when :shihon
241
- '仮払地方税資本割'
242
- when :fukakachi
243
- '仮払地方税付加価値割'
244
- when :houjinzei
245
- '仮払地方税法人税割'
246
- when :kinto
247
- '仮払地方税均等割'
242
+ def karibarai_label(key, category)
243
+ if category == 'city'
244
+ case key
245
+ when :houjinzei
246
+ '仮払市民税法人税割'
247
+ when :kinto
248
+ '仮払市民税均等割'
249
+ end
250
+ else
251
+ case key
252
+ when :tokubetsu
253
+ '仮払地方税特別法人事業税'
254
+ when :shotoku
255
+ '仮払地方税所得割'
256
+ when :syunyu
257
+ '仮払地方税収入割'
258
+ when :shihon
259
+ '仮払地方税資本割'
260
+ when :fukakachi
261
+ '仮払地方税付加価値割'
262
+ when :houjinzei
263
+ '仮払地方税法人税割'
264
+ when :kinto
265
+ '仮払地方税均等割'
266
+ end
248
267
  end
249
268
  end
250
269
 
@@ -11,11 +11,11 @@ module Luca
11
11
  #
12
12
  def 税額計算
13
13
  所得 = 所得金額
14
+ 法人税額 = 中小企業の軽減税額(所得) + 一般区分の税額(所得)
15
+ 地方法人税課税標準 = (法人税額 / 1000).floor * 1000
16
+ 地方法人税 = 地方法人税額(地方法人税課税標準)
14
17
  { houjin: {}, kenmin: {}, shimin: {} }.tap do |tax|
15
- 法人税額 = 中小企業の軽減税額(所得) + 一般区分の税額(所得)
16
18
  tax[:houjin][:kokuzei] = (法人税額 / 100).floor * 100
17
- 地方法人税課税標準 = (法人税額 / 1000).floor * 1000
18
- 地方法人税 = 地方法人税額(地方法人税課税標準)
19
19
  tax[:houjin][:chihou] = (地方法人税 / 100).floor * 100
20
20
 
21
21
  tax[:kenmin][:houjinzei], tax[:shimin][:houjinzei] = 法人税割(法人税額)
@@ -68,18 +68,45 @@ module Luca
68
68
  # 繰越損失適用後の所得金額
69
69
  #
70
70
  def 所得金額
71
- @繰越損失管理 = Sonshitsu.load(@end_date).update(当期所得金額).save if @繰越損失管理.nil?
71
+ @繰越損失管理 = Sonshitsu.load(@end_date).update(@別表四調整所得).save if @繰越損失管理.nil?
72
72
  @繰越損失管理.profit
73
73
  end
74
74
 
75
- # 税引前当期利益をもとに計算
76
75
  # 消費税を租税公課に計上している場合、控除済みの金額
77
76
  # 事業税は仮払経理の場合にも納付時損金/還付時益金
78
77
  #
79
- def 当期所得金額
80
- _, 納付事業税 = 未納事業税期中増減
81
- 事業税中間納付 = prepaid_tax('1854') + prepaid_tax('1855') + prepaid_tax('1856') + prepaid_tax('1857') + prepaid_tax('1858')
82
- LucaSupport::Code.readable(@pl_data.dig('GA') - 納付事業税 - 事業税中間納付 + 還付事業税)
78
+ def 別表四所得調整(ext_config = nil)
79
+ @税引前損益 = readable(@pl_data.dig('GA'))
80
+
81
+ if ext_config
82
+ @減価償却の償却超過額 = ext_config.dig('損金不算入', '減価償却')
83
+ @役員給与の損金不算入額 = ext_config.dig('損金不算入', '役員給与')
84
+ @交際費等の損金不算入額 = ext_config.dig('損金不算入', '交際費')
85
+ @減価償却超過額の当期認容額 = ext_config.dig('益金不算入', '減価償却')
86
+ @受取配当金の益金不算入額 = ext_config.dig('益金不算入', '受取配当金')
87
+ @受贈益の益金不算入額 = ext_config.dig('益金不算入', '受贈益')
88
+ end
89
+
90
+ @当期還付事業税 = refund_tax('1504')
91
+ @損金不算入額税額未確定 = [
92
+ @減価償却の償却超過額,
93
+ @役員給与の損金不算入額,
94
+ @交際費等の損金不算入額,
95
+ @当期還付事業税
96
+ ].compact.sum
97
+
98
+ _, @納付事業税 = 未納事業税期中増減
99
+ @事業税中間納付 = ['1854', '1855', '1856', '1857', '1858']
100
+ .map{ |k| prepaid_tax(k) }.compact.sum
101
+ @益金不算入額税額未確定 = [
102
+ @納付事業税,
103
+ @事業税中間納付,
104
+ @減価償却超過額の当期認容額,
105
+ @受取配当金の益金不算入額,
106
+ @受贈益の益金不算入額,
107
+ ].compact.sum
108
+
109
+ @別表四調整所得 = @税引前損益 + @損金不算入額税額未確定 - @益金不算入額税額未確定
83
110
  end
84
111
 
85
112
  # -----------------------------------------------------
@@ -113,6 +140,10 @@ module Luca
113
140
  # -----------------------------------------------------
114
141
 
115
142
  def 均等割
143
+ if @employee.nil?
144
+ STDERR.puts "地方税の提出先設定に従業員人数がないため、1名とみなして計算"
145
+ @employee ||= 1
146
+ end
116
147
  tax = if 地方税資本金等の額 <= 10_000_000
117
148
  city = @employee > 50 ? 120_000 : 50_000
118
149
  [20_000, city]
@@ -273,10 +304,6 @@ module Luca
273
304
  end
274
305
  end
275
306
 
276
- def 還付事業税
277
- refund_tax('1504')
278
- end
279
-
280
307
  def 未納事業税期中増減
281
308
  r = gross_amount('5152', @start_date.year, @start_date.month, @end_date.year, @end_date.month)
282
309
  [LucaSupport::Code.readable(r[1]), LucaSupport::Code.readable(r[0])]
@@ -318,6 +345,8 @@ module Luca
318
345
  # :section: 複数自治体間の分割計算
319
346
  # -----------------------------------------------------
320
347
  def 事業税の分割課税標準(課税標準)
348
+ return 課税標準 if ! Luca::Jp::Util.eltax_config('reports')
349
+
321
350
  case Luca::Jp::Util.eltax_config('reports')
322
351
  .filter { |r| レポート種別.include?(r['type']) }.length
323
352
  when 0, 1
@@ -26,7 +26,7 @@ module Luca
26
26
  @profit = 0
27
27
  end
28
28
 
29
- # sonshitsu format is as bellows:
29
+ # sonshitsu format is as follows:
30
30
  #
31
31
  # - start_date: 2020-01-01
32
32
  # end_date: 2020-12-31
@@ -37,7 +37,7 @@ module Luca
37
37
  #
38
38
  def self.load(this_year)
39
39
  records = if File.exist?(record_file)
40
- YAML.safe_load(File.read(record_file), permitted_classes: [Date])
40
+ YAML.safe_load(File.read(record_file), permitted_classes: [Date], aliases: true)
41
41
  .filter { |record| record['start_date'] > this_year.prev_year(11) && record['end_date'] < this_year }
42
42
  .sort { |a, b| a['start_date'] <=> b['start_date'] }
43
43
  else
@@ -21,6 +21,7 @@ module Luca
21
21
  # TODO: 軽減税率売上の識別
22
22
  #
23
23
  def kani(export: false)
24
+ @2割特例 = config.dig('jp', 'syouhizei_kubun') == 2023
24
25
  set_pl(4)
25
26
  set_bs(4)
26
27
  @issue_date = Date.today
@@ -32,6 +33,7 @@ module Luca
32
33
 
33
34
  @sales = @pl_data.dig('A0') * 100 / (100 + 税率 + 地方税率).floor
34
35
  @tax_amount = (課税標準額(@sales) * 税率 / 100).floor
36
+ @基準期間の課税売上高 = LucaSupport::Code.readable(基準期間の課税売上高(税率 + 地方税率))
35
37
  @みなし仕入税額 = (@tax_amount * みなし仕入率(config.dig('jp', 'syouhizei_kubun')) / 100).floor
36
38
  @税額 = LucaSupport::Code.readable(((@tax_amount - @みなし仕入税額) / 100).floor * 100)
37
39
  @譲渡割額 = (@税額 * 地方税率 / (税率*100)).floor * 100
@@ -54,9 +56,17 @@ module Luca
54
56
  @procedure_name = '消費税及び地方消費税申告(簡易課税・法人)'
55
57
  @form_vers = proc_version
56
58
  @version = @form_vers['proc']
57
- @form_sec = ['SHA020', 'SHB047', 'SHB067'].map{ |c| form_rdf(c) }.join('')
58
59
  @it = it_part
59
- @form_data = [申告書簡易課税, 付表四の三, 付表五の三].join("\n")
60
+ @form_sec = if @2割特例
61
+ ['SHA020', 'SHB070'].map{ |c| form_rdf(c) }.join('')
62
+ else
63
+ ['SHA020', 'SHB047', 'SHB067'].map{ |c| form_rdf(c) }.join('')
64
+ end
65
+ @form_data = if @2割特例
66
+ [申告書簡易課税, 付表六].join("\n")
67
+ else
68
+ [申告書簡易課税, 付表四の三, 付表五の三].join("\n")
69
+ end
60
70
  render_erb(search_template('consumption.xtx.erb'))
61
71
  end
62
72
  end
@@ -73,6 +83,10 @@ module Luca
73
83
  render_erb(search_template('fuhyo53.xml.erb'))
74
84
  end
75
85
 
86
+ def 付表六
87
+ render_erb(search_template('fuhyo6.xml.erb'))
88
+ end
89
+
76
90
  def export_json
77
91
  dat = kani(export: true)
78
92
  [].tap do |res|
@@ -110,6 +124,16 @@ module Luca
110
124
  (課税資産の譲渡等の対価の額 / 1000).floor * 1000
111
125
  end
112
126
 
127
+ def 基準期間の課税売上高(税率)
128
+ 基準日 = @end_date.prev_year(2)
129
+ from_d, to_d = LucaBook::Util.current_fy(基準日)
130
+ state = LucaBook::State.range(from_d.year, from_d.month, to_d.year, to_d.month)
131
+ state.pl
132
+ (state.pl_data.dig('A0') * 100 / (100 + 税率)).floor
133
+ end
134
+
135
+ # 2023は2割特例
136
+ #
113
137
  def みなし仕入率(事業区分)
114
138
  {
115
139
  1 => 90,
@@ -117,7 +141,8 @@ module Luca
117
141
  3 => 70,
118
142
  4 => 60,
119
143
  5 => 50,
120
- 6 => 40
144
+ 6 => 40,
145
+ 2023 => 80
121
146
  }[事業区分]
122
147
  end
123
148
 
@@ -144,7 +169,9 @@ module Luca
144
169
  end
145
170
 
146
171
  def proc_version
147
- if @end_date >= Date.parse('2021-4-1')
172
+ if @end_date >= Date.parse('2023-10-1')
173
+ { 'proc' => '23.0.0', 'SHA020' => '9.0' }
174
+ elsif @end_date >= Date.parse('2021-4-1')
148
175
  { 'proc' => '20.0.1', 'SHA020' => '7.1' }
149
176
  else
150
177
  { 'proc' => '20.0.0', 'SHA020' => '7.0' }
@@ -1,4 +1,4 @@
1
- <HOA201 page="1" VR="4.0" id="HOA201" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
1
+ <HOA201 page="1" VR="<%= @form_vers['HOA201'] %>" id="HOA201" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
2
2
  <VAA00000>
3
3
  <VAA00010>
4
4
  <VAA00020 IDREF="JIGYO_NENDO_FROM"/>
@@ -14,55 +14,76 @@
14
14
  <ARC00000>
15
15
  <ARC00010>
16
16
  <% ['ARC00020', 'ARC00030'].each do |code| %>
17
- <%= render_attr(code, 法人税損金納付額 + 法人税仮払納付額) %>
17
+ <%= render_attr(code, @損金経理をした法人税及び地方法人税) %>
18
18
  <% end %>
19
19
  </ARC00010>
20
20
  <ARC00040>
21
21
  <% ['ARC00050', 'ARC00060'].each do |code| %>
22
- <%= render_attr(code, [都道府県民税損金納付, 市民税損金納付, 都道府県民税仮払納付, 市民税仮払納付].compact.sum) %>
22
+ <%= render_attr(code, @損金経理をした道府県民税及び市町村民税) %>
23
23
  <% end %>
24
24
  </ARC00040>
25
25
  <ARC00100>
26
26
  <% ['ARC00110', 'ARC00120'].each do |code| %>
27
- <%= render_attr(code, 当期納税充当金) %>
27
+ <%= render_attr(code, @損金経理をした納税充当金) %>
28
28
  <% end %>
29
29
  </ARC00100>
30
- <%= 別表四還付事業税 %>
31
- <%# ARC00360 通算法人に係る加算額 %>
32
- <% if (@当期還付法人税 + @当期還付都道府県住民税 + @当期還付市民税) > 0 %>
33
- <ARC00275>
34
- <%= render_attr('ARC00280', '前期仮払税金否認') %>
35
- <% ['ARC00290', 'ARC00300'].each do |code| %>
36
- <%= render_attr(code, [@当期還付法人税, @当期還付都道府県住民税, @当期還付市民税].compact.sum) %>
30
+ <% if @減価償却の償却超過額 %>
31
+ <ARC00160>
32
+ <% ['ARC00170', 'ARC00180'].each do |code| %>
33
+ <%= render_attr(code, @減価償却の償却超過額) %>
34
+ <% end %>
35
+ </ARC00160>
36
+ <% end %>
37
+ <% if @役員給与の損金不算入額 %>
38
+ <ARC00190>
39
+ <% ['ARC00200', 'ARC00210'].each do |code| %>
40
+ <%= render_attr(code, @役員給与の損金不算入額) %>
37
41
  <% end %>
38
- </ARC00275>
42
+ </ARC00190>
39
43
  <% end %>
44
+ <% if @交際費等の損金不算入額 %>
45
+ <ARC00213>
46
+ <% ['ARC00215', 'ARC00218'].each do |code| %>
47
+ <%= render_attr(code, @交際費等の損金不算入額) %>
48
+ <% end %>
49
+ </ARC00213>
50
+ <% end %>
51
+ <%# ARC00360 通算法人に係る加算額 %>
52
+ <%= 別表四還付事業税 %>
40
53
  <ARC00325>
41
54
  <% ['ARC00330', 'ARC00340'].each do |code| %>
42
- <%= render_attr(code, [@法人税等, @当期還付事業税, @当期還付法人税, @当期還付都道府県住民税, 法人税仮払納付額, 都道府県民税仮払納付, 市民税仮払納付].compact.sum) %>
55
+ <%= render_attr(code, @損金不算入額) %>
43
56
  <% end %>
44
57
  </ARC00325>
45
58
  </ARC00000>
46
59
  <ARD00000>
60
+ <% if @減価償却超過額の当期認容額 %>
61
+ <ARD00010>
62
+ <% ['ARD00020', 'ARD00030'].each do |code| %>
63
+ <%= render_attr(code, @減価償却超過額の当期認容額) %>
64
+ <% end %>
65
+ </ARD00010>
66
+ <% end %>
47
67
  <ARD00040>
48
68
  <% ['ARD00050', 'ARD00060'].each do |code| %>
49
69
  <%= render_attr(code, @納付事業税) %>
50
70
  <% end %>
51
71
  </ARD00040>
52
- <ARD00100>
53
- <% ['ARD00110', 'ARD00120'].each do |code| %>
54
- <%= render_attr(code, [@当期還付法人税, @当期還付都道府県住民税, @当期還付市民税].compact.sum) %>
55
- <% end %>
56
- </ARD00100>
57
- <%# ARD00400 通算法人に係る減算額 %>
58
- <% if (法人税仮払納付額 + 都道府県民税仮払納付 + 市民税仮払納付) > 0 %>
59
- <ARD00215>
60
- <%= render_attr('ARD00220', '仮払税金認定損') %>
61
- <% ['ARD00230', 'ARD00240'].each do |code| %>
62
- <%= render_attr(code, [法人税仮払納付額, 都道府県民税仮払納付, 市民税仮払納付].compact.sum) %>
72
+ <% if @受取配当金の益金不算入額 %>
73
+ <ARD00070>
74
+ <% ['ARD00080', 'ARD00090'].each do |code| %>
75
+ <%= render_attr(code, @受取配当金の益金不算入額) %>
63
76
  <% end %>
64
- </ARD00215>
77
+ </ARD00070>
78
+ <% end %>
79
+ <% if @受贈益の益金不算入額 %>
80
+ <ARD00340>
81
+ <% ['ARD00350', 'ARD00360'].each do |code| %>
82
+ <%= render_attr(code, @受贈益の益金不算入額) %>
83
+ <% end %>
84
+ </ARD00340>
65
85
  <% end %>
86
+ <%# ARD00400 通算法人に係る減算額 %>
66
87
  <% if @翌期還付事業税 > 0 %>
67
88
  <ARD00215>
68
89
  <%= render_attr('ARD00220', '仮払事業税認定損') %>
@@ -72,51 +93,73 @@
72
93
  </ARD00215>
73
94
  <% end %>
74
95
  <ARD00280>
75
- <% ['ARD00290', 'ARD00300'].each do |code| %>
76
- <%= render_attr(code, [@納付事業税, @翌期還付事業税, @当期還付法人税, @当期還付都道府県住民税, @当期還付市民税, 法人税仮払納付額, 都道府県民税仮払納付, 市民税仮払納付].compact.sum) %>
77
- <% end %>
96
+ <%= render_attr('ARD00290', @益金不算入額) %>
97
+ <%= render_attr('ARD00300', @益金不算入額留保) %>
98
+ <ARD00310>
99
+ <%= render_attr('ARD00330', @益金不算入額社外流出) %>
100
+ </ARD00310>
78
101
  </ARD00280>
79
102
  </ARD00000>
80
103
  <ARE00000>
81
- <% ['ARE00010', 'ARE00020'].each do |code| %>
82
- <%= render_attr(code, @別表四調整所得) %>
83
- <% end %>
104
+ <%= render_attr('ARE00010', @別表四調整所得) %>
105
+ <%= render_attr('ARE00020', @別表四調整所得留保) %>
106
+ <ARE00030>
107
+ <%= render_attr('ARE00050', @別表四調整所得社外流出) %>
108
+ </ARE00030>
84
109
  </ARE00000>
85
110
  <ARZ10000>
86
- <% ['ARZ10010', 'ARZ10020'].each do |code| %>
87
- <%= render_attr(code, @別表四調整所得) %>
88
- <% end %>
111
+ <%= render_attr('ARZ10010', @別表四調整所得) %>
112
+ <%= render_attr('ARZ10020', @別表四調整所得留保) %>
113
+ <ARZ10030>
114
+ <%= render_attr('ARZ10050', @別表四調整所得社外流出) %>
115
+ </ARZ10030>
89
116
  </ARZ10000>
117
+ <%# ARF00000 寄附金の損金不算入額 %>
118
+ <%# ARI00000 法人税額から控除される所得税額 %>
119
+ <%# ARJ00000 税額控除の対象となる外国法人税の額 %>
90
120
  <ARK00000>
91
- <% ['ARK00010', 'ARK00020'].each do |code| %>
92
- <%= render_attr(code, @別表四調整所得) %>
93
- <% end %>
121
+ <%= render_attr('ARK00010', @別表四調整所得) %>
122
+ <%= render_attr('ARK00020', @別表四調整所得留保) %>
123
+ <ARK00030>
124
+ <%= render_attr('ARK00050', @別表四調整所得社外流出) %>
125
+ </ARK00030>
94
126
  </ARK00000>
95
127
  <ARM00000>
96
- <% ['ARM00010', 'ARM00020'].each do |code| %>
97
- <%= render_attr(code, @別表四調整所得) %>
98
- <% end %>
128
+ <%= render_attr('ARM00010', @別表四調整所得) %>
129
+ <%= render_attr('ARM00020', @別表四調整所得留保) %>
130
+ <ARM00030>
131
+ <%= render_attr('ARM00050', @別表四調整所得社外流出) %>
132
+ </ARM00030>
99
133
  </ARM00000>
134
+ <%# ARN10010 中間申告における繰戻しによる還付に係る災害損失欠損金額の益金算入額 %>
135
+ <%# ARR00000 非適格合併又は残余財産の全部分配等による移転資産等の譲渡利益額又は譲渡損失額 %>
100
136
  <ARS00000>
101
- <% ['ARS00010', 'ARS00020'].each do |code| %>
102
- <%= render_attr(code, @別表四調整所得) %>
103
- <% end %>
137
+ <%= render_attr('ARS00010', @別表四調整所得) %>
138
+ <%= render_attr('ARS00020', @別表四調整所得留保) %>
139
+ <ARS00030>
140
+ <%= render_attr('ARS00050', @別表四調整所得社外流出) %>
141
+ </ARS00030>
104
142
  </ARS00000>
105
143
  <%# ARS10000 更生欠損金又は民事再生等評価換えが行われる場合の再生等欠損金の損金算入額 %>
106
144
  <%# ARS20000 通算対象欠損金額の損金算入額又は通算対象所得金額の益金算入額 %>
107
145
  <ARS50000>
108
- <% ['ARS50010', 'ARS50020'].each do |code| %>
109
- <%= render_attr(code, @別表四調整所得) %>
110
- <% end %>
146
+ <%= render_attr('ARS50010', @別表四調整所得) %>
147
+ <%= render_attr('ARS50020', @別表四調整所得留保) %>
148
+ <ARS50030>
149
+ <%= render_attr('ARS50050', @別表四調整所得社外流出) %>
150
+ </ARS50030>
111
151
  </ARS50000>
112
152
  <ART00000>
113
153
  <% ['ART00010', 'ART00020'].each do |code| %>
114
154
  <%= render_attr(code, @繰越損失管理.deduction) %>
115
155
  <% end %>
116
156
  </ART00000>
157
+ <%# ARX00000 残余財産の確定の日の属する事業年度に係る事業税及び特別法人事業税の損金算入額 %>
117
158
  <ARV00000>
118
- <% ['ARV00010', 'ARV00020'].each do |code| %>
119
- <%= render_attr(code, @別表四調整所得 - @繰越損失管理.deduction) %>
120
- <% end %>
159
+ <%= render_attr('ARV00010', @別表四調整所得 - @繰越損失管理.deduction) %>
160
+ <%= render_attr('ARV00020', @別表四調整所得留保) %>
161
+ <ARV00030>
162
+ <%= render_attr('ARV00050', @別表四調整所得社外流出 - @繰越損失管理.deduction) %>
163
+ </ARV00030>
121
164
  </ARV00000>
122
165
  </HOA420>
@@ -7,7 +7,7 @@
7
7
  <ICA00040 IDREF="NOZEISHA_NM"/>
8
8
  </ICA00000>
9
9
  <ICB00000>
10
- <%= 別表五一仮払税金 %>
10
+ <%= 別表五一仮払事業税 %>
11
11
  <%= 別表五一還付法人税 %>
12
12
  <%= 別表五一還付都道府県住民税 %>
13
13
  <%= 別表五一還付市民税 %>
@@ -25,7 +25,7 @@
25
25
  <%= render_attr('ICB00490', 納税充当金期中減) %>
26
26
  <%= render_attr('ICB00500', 当期納税充当金) %>
27
27
  </ICB00480>
28
- <%= render_attr('ICB00510', 当期納税充当金) %>
28
+ <%= render_attr('ICB00510', 期末納税充当金) %>
29
29
  </ICB00460>
30
30
  <ICB00520>
31
31
  <ICB00530>
@@ -46,10 +46,10 @@
46
46
  <%= render_attr('ICB00650', @都道府県民税期中減 + @都道府県民税中間納付) %>
47
47
  <ICB00660>
48
48
  <%= render_attr('ICB00670', @都道府県民税中間納付) %>
49
- <%= render_attr('ICB00680', 確定都道府県住民税) %>
49
+ <%= render_attr('ICB00680', 期末未納都道府県民税) %>
50
50
  </ICB00660>
51
51
  </ICB00640>
52
- <%= render_attr('ICB00700', 確定都道府県住民税) %>
52
+ <%= render_attr('ICB00700', 期末未納都道府県民税) %>
53
53
  </ICB00620>
54
54
  <ICB00710>
55
55
  <%= render_attr('ICB00720', 期首未納市民税) %>
@@ -57,10 +57,10 @@
57
57
  <%= render_attr('ICB00740', @市民税期中減 + @市民税中間納付) %>
58
58
  <ICB00750>
59
59
  <%= render_attr('ICB00760', @市民税中間納付) %>
60
- <%= render_attr('ICB00770', (確定市民税 - 市民税損金納付)) %>
60
+ <%= render_attr('ICB00770', 期末未納市民税) %>
61
61
  </ICB00750>
62
62
  </ICB00730>
63
- <%= render_attr('ICB00790', (確定市民税 - 市民税損金納付)) %>
63
+ <%= render_attr('ICB00790', 期末未納市民税) %>
64
64
  </ICB00710>
65
65
  </ICB00520>
66
66
  <ICB00800>
@@ -100,7 +100,7 @@
100
100
  <%= render_attr('IEC00450', (確定都道府県住民税 - @都道府県民税中間納付)) %>
101
101
  <IEC00460>
102
102
  <%= render_attr('IEC00470', @翌期還付都道府県住民税 * -1) %>
103
- <%= render_attr('IEC00480', (確定都道府県住民税 - 都道府県民税損金納付)) %>
103
+ <%= render_attr('IEC00480', 期末未納都道府県民税) %>
104
104
  </IEC00460>
105
105
  </IEC00440>
106
106
  </IEC00170>
@@ -122,7 +122,7 @@
122
122
  </IEC00530>
123
123
  <IEC00630>
124
124
  <%= render_attr('IEC00640', @翌期還付都道府県住民税 * -1) %>
125
- <%= render_attr('IEC00650', (確定都道府県住民税 - 都道府県民税損金納付)) %>
125
+ <%= render_attr('IEC00650', 期末未納都道府県民税) %>
126
126
  </IEC00630>
127
127
  </IEC00490>
128
128
  </IEC00000>
@@ -159,7 +159,7 @@
159
159
  <%= render_attr('IED00320', (確定市民税 - @市民税中間納付)) %>
160
160
  <IED00330>
161
161
  <%= render_attr('IED00340', @翌期還付市民税 * -1) %>
162
- <%= render_attr('IED00350', (確定市民税 - 市民税損金納付)) %>
162
+ <%= render_attr('IED00350', 期末未納市民税) %>
163
163
  </IED00330>
164
164
  </IED00310>
165
165
  </IED00170>
@@ -181,7 +181,7 @@
181
181
  </IED00400>
182
182
  <IED00500>
183
183
  <%= render_attr('IED00510', @翌期還付市民税 * -1) %>
184
- <%= render_attr('IED00520', (確定市民税 - 市民税損金納付)) %>
184
+ <%= render_attr('IED00520', 期末未納市民税) %>
185
185
  </IED00500>
186
186
  </IED00360>
187
187
  </IED00000>
@@ -225,7 +225,7 @@
225
225
  <%= render_attr('IEE00420', 当期事業税納付 + 事業税損金納付) %>
226
226
  </IEE00400>
227
227
  </IEE00330>
228
- <%= render_attr('IEE00430', 期首未納事業税 - @事業税期中減) %>
228
+ <%= render_attr('IEE00430', 期末未納事業税) %>
229
229
  </IEE00300>
230
230
  </IEE00000>
231
231
  <IEF00000>
@@ -7,9 +7,9 @@
7
7
  <MCA00040 IDREF="NOZEISHA_NM"/>
8
8
  </MCA00000>
9
9
  <MCB00000>
10
- <%= render_attr('MCB00002', 当期所得金額) %>
10
+ <%= render_attr('MCB00002', @別表四調整所得) %>
11
11
  <MCB00004>
12
- <%= render_attr('MCB00008', [当期所得金額, 0].max) %>
12
+ <%= render_attr('MCB00008', [@別表四調整所得, 0].max) %>
13
13
  </MCB00004>
14
14
  <%= 別表七各期青色損失 %>
15
15
  <MCB00220>
@@ -8,8 +8,8 @@
8
8
  <gen:yyyymmdd></gen:yyyymmdd>
9
9
  </AMA_JIGYO_EDATE>
10
10
  <AMA_NAME idref="NAME"></AMA_NAME>
11
- <%= render_attr('AMA00100', 当期所得金額) %>
12
- <%= render_attr('AMA00200', [当期所得金額, 0].max) %>
11
+ <%= render_attr('AMA00100', @別表四調整所得) %>
12
+ <%= render_attr('AMA00200', [@別表四調整所得, 0].max) %>
13
13
  <AMB00110>
14
14
  <gen:era />
15
15
  <gen:yy />
@@ -149,12 +149,12 @@
149
149
  <AAK01100><%= 特別法人事業税(@所得割) - @地方特別法人事業税中間納付 %></AAK01100>
150
150
  <AAK01200 />
151
151
  <AAK01300><%= 特別法人事業税(@所得割) - @地方特別法人事業税中間納付 %></AAK01300>
152
- <%= render_attr('AAF00100', 当期所得金額) %>
152
+ <%= render_attr('AAF00100', @別表四調整所得) %>
153
153
  <AAF00200 />
154
154
  <AAF00300 />
155
155
  <AAF00500 />
156
156
  <AAF00600 />
157
- <%= render_attr('AAF00800', 当期所得金額) %>
157
+ <%= render_attr('AAF00800', @別表四調整所得) %>
158
158
  <%= render_attr('AAF00700', @繰越損失管理.deduction) %>
159
159
  <%= render_attr('AAG00100', 所得金額) %>
160
160
  <AAH00100 />
@@ -0,0 +1,32 @@
1
+ <SHB070 page="1" VR="1.0" id="SHB070" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
2
+ <AYA00000><AYA00010>
3
+ <AYA00020 IDREF="KAZEI_KIKAN_FROM"/>
4
+ <AYA00030 IDREF="KAZEI_KIKAN_TO"/>
5
+ </AYA00010>
6
+ <AYA00040 IDREF="NOZEISHA_NM"/>
7
+ </AYA00000>
8
+ <AYB00000>
9
+ <AYB00010>
10
+ <%= render_attr('AYB00030', LucaSupport::Code.readable(@sales)) %>
11
+ <%= render_attr('AYB00040', LucaSupport::Code.readable(@sales)) %>
12
+ </AYB00010>
13
+ <AYB00050>
14
+ <%= render_attr('AYB00070', 課税標準額(@sales)) %>
15
+ <%= render_attr('AYB00080', 課税標準額(@sales)) %>
16
+ </AYB00050>
17
+ <AYB00090>
18
+ <%= render_attr('AYB00110', @tax_amount) %>
19
+ <%= render_attr('AYB00120', @tax_amount) %>
20
+ </AYB00090>
21
+ <AYB00210>
22
+ <%= render_attr('AYB00230', @tax_amount) %>
23
+ <%= render_attr('AYB00240', @tax_amount) %>
24
+ </AYB00210>
25
+ </AYB00000>
26
+ <AYC00000>
27
+ <AYC00010>
28
+ <%= render_attr('AYC00030', @みなし仕入税額) %>
29
+ <%= render_attr('AYC00040', @みなし仕入税額) %>
30
+ </AYC00010>
31
+ </AYC00000>
32
+ </SHB070>
@@ -69,11 +69,13 @@
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' %>
72
73
  <IAE07000>
73
74
  <%= render_attr('IAE07700', gaikyo_config('data_cloud') ? '<kubun_CD>1</kubun_CD>' : nil) %>
74
75
  <%= render_attr('IAE07800', gaikyo_config('data_media') ? '<kubun_CD>1</kubun_CD>' : nil) %>
75
76
  <%= render_attr('IAE07900', gaikyo_config('data_server') ? '<kubun_CD>1</kubun_CD>' : nil) %>
76
77
  </IAE07000>
78
+ <% end %>
77
79
  </IAE00000>
78
80
  <IAT00000>
79
81
  <IAT01000>
@@ -34,7 +34,10 @@
34
34
  <%= render_attr('ABI00110', @中間納付額) %>
35
35
  <%= render_attr('ABI00120', 納付税額(@税額, @中間納付額)) %>
36
36
  <%= render_attr('ABI00130', 中間還付税額(@税額, @中間納付額)) %>
37
- <%= render_attr('ABI00170', LucaSupport::Code.readable(@sales)) %>
37
+ <% if ! @2割特例 %>
38
+ <%= render_attr('ABI00170', LucaSupport::Code.readable(@sales)) %>
39
+ <% end %>
40
+ <%= render_attr('ABI00180', @基準期間の課税売上高) %>
38
41
  </ABI00000>
39
42
  <ABJ00000>
40
43
  <ABJ00010>
@@ -54,11 +57,16 @@
54
57
  <ABK00030><kubun_CD>2</kubun_CD></ABK00030>
55
58
  <ABK00040><kubun_CD>2</kubun_CD></ABK00040>
56
59
  </ABK00000>
57
- <ABL00000>
58
- <ABL00010><kubun_CD>2</kubun_CD></ABL00010>
59
- <ABL00020><%= 事業区分 %></ABL00020>
60
- <ABL00210><kubun_CD>2</kubun_CD></ABL00210>
61
- </ABL00000>
60
+ <% if ! @2割特例 %>
61
+ <ABL00000>
62
+ <ABL00010><kubun_CD>2</kubun_CD></ABL00010>
63
+ <ABL00020><%= 事業区分 %></ABL00020>
64
+ <ABL00210><kubun_CD>2</kubun_CD></ABL00210>
65
+ </ABL00000>
66
+ <% end %>
67
+ <% if @form_vers['SHA020'] >= '9.0' %>
68
+ <ABY00000><kubun_CD><%= @2割特例 ? 1 : 2 %></kubun_CD></ABY00000>
69
+ <% end %>
62
70
  </SHA020-1>
63
71
  <SHA020-2 page="1">
64
72
  <ABM00000>
data/lib/luca/jp/util.rb CHANGED
@@ -21,9 +21,12 @@ module Luca
21
21
  end
22
22
  end
23
23
 
24
+ # TODO: customerオプションを適切に扱うには
25
+ # 納付時にx-customerを付加していないケースの考慮が必要
24
26
  def prepaid_tax(code, customer = nil)
25
27
  search_end = @end_date.prev_month # exclude year end adjustment
26
- header = { customer: customer } unless customer.nil?
28
+ # header = { customer: customer } unless customer.nil?
29
+ header = nil
27
30
  amount, _ = self.class.net(@start_date.year, @start_date.month, search_end.year, search_end.month, code: code, header: header)
28
31
  LucaSupport::Code.readable(amount[code] || 0)
29
32
  end
@@ -95,8 +98,8 @@ module Luca
95
98
  end
96
99
 
97
100
  def 期首期末残高(code)
98
- pre = readable(@start_balance.dig(code))
99
- post = readable(@bs_data.dig(code))
101
+ pre = readable(@start_balance.dig(code)) || 0
102
+ post = readable(@bs_data.dig(code)) || 0
100
103
  [readable(pre), readable(post)]
101
104
  end
102
105
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Luca
4
4
  module Jp
5
- VERSION = '0.16.3'
5
+ VERSION = '0.17.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.16.3
4
+ version: 0.17.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-01-11 00:00:00.000000000 Z
11
+ date: 2024-03-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lucabook
@@ -148,6 +148,7 @@ files:
148
148
  - lib/luca/jp/templates/eltax.xml.erb
149
149
  - lib/luca/jp/templates/fuhyo43.xml.erb
150
150
  - lib/luca/jp/templates/fuhyo53.xml.erb
151
+ - lib/luca/jp/templates/fuhyo6.xml.erb
151
152
  - lib/luca/jp/templates/gaikyo.xml.erb
152
153
  - lib/luca/jp/templates/kaikake-meisai.xml.erb
153
154
  - lib/luca/jp/templates/kariire-meisai.xml.erb