luca-jp 0.2.4 → 0.12.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 +4 -4
- data/exe/luca-jp +44 -12
- data/lib/luca/jp/aoiro.rb +71 -38
- data/lib/luca/jp/chihouzei.rb +86 -34
- data/lib/luca/jp/common.rb +156 -30
- data/lib/luca/jp/it_part.rb +1 -1
- data/lib/luca/jp/syouhizei.rb +11 -1
- data/lib/luca/jp/templates/beppyo1-next.xml.erb +4 -2
- data/lib/luca/jp/templates/beppyo1.xml.erb +1 -1
- data/lib/luca/jp/templates/beppyo2.xml.erb +2 -0
- data/lib/luca/jp/templates/beppyo4.xml.erb +60 -35
- data/lib/luca/jp/templates/beppyo51.xml.erb +36 -6
- data/lib/luca/jp/templates/beppyo52.xml.erb +1 -1
- data/lib/luca/jp/templates/el-no20.xml.erb +143 -0
- data/lib/luca/jp/templates/el-no6-43.xml.erb +10 -9
- data/lib/luca/jp/templates/el-no6-9.xml.erb +2 -2
- data/lib/luca/jp/templates/el-no6.xml.erb +24 -22
- data/lib/luca/jp/templates/eltax.xml.erb +13 -13
- data/lib/luca/jp/templates/gaikyo.xml.erb +82 -2
- data/lib/luca/jp/templates/shoken-meisai.xml.erb +13 -7
- data/lib/luca/jp/templates/syouhizei-shinkoku-kanni.xml.erb +1 -1
- data/lib/luca/jp/templates/yokin-meisai.xml.erb +1 -0
- data/lib/luca/jp/uchiwake.rb +8 -3
- data/lib/luca/jp/util.rb +20 -3
- data/lib/luca/jp/version.rb +1 -1
- metadata +10 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 14025702bd2ec1fc0f9758ae982c09b437af41b531834d71de1b6b881cdc1e76
|
4
|
+
data.tar.gz: 8c265c52dd25ea94c4dff01886f0afcc6dd187612b0e61856eab8c50c520ed2f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea5d03e02adeae4b9257a055fe528a77cd2dcc2627df0379d063e9e88ae55b8f03ad8298dcd78334522d490c600d75012b8ad5b2d74c56b07e1b2a24bc06cf80
|
7
|
+
data.tar.gz: 989dd502799f53c48ba1655518b4def4b15e0737f5e8ec5fd9169bbf18e18022950c1409e9ea95b25db6c2bf4d9351beb37ad0a24dd65b7713ac3e6c0194617e
|
data/exe/luca-jp
CHANGED
@@ -6,25 +6,30 @@ require 'luca/jp'
|
|
6
6
|
class LucaCmd
|
7
7
|
def self.syouhizei(args, params)
|
8
8
|
if params[:export]
|
9
|
-
Luca::Jp::Syouhizei.range(*args).export_json
|
9
|
+
Luca::Jp::Syouhizei.range(*auto_range(args, params)).export_json
|
10
10
|
else
|
11
|
-
puts Luca::Jp::Syouhizei.range(*args).kani
|
11
|
+
puts Luca::Jp::Syouhizei.range(*auto_range(args, params)).kani
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
15
|
def self.houjinzei(args, params)
|
16
16
|
if params[:export]
|
17
|
-
Luca::Jp::Aoiro.range(*args).export_json
|
17
|
+
Luca::Jp::Aoiro.range(*auto_range(args, params)).export_json
|
18
18
|
else
|
19
|
-
puts Luca::Jp::Aoiro.range(*args).kani
|
19
|
+
puts Luca::Jp::Aoiro.range(*auto_range(args, params)).kani
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
23
|
def self.chihouzei(args, params)
|
24
24
|
if params[:export]
|
25
|
-
Luca::Jp::
|
25
|
+
accounts = Luca::Jp::Util.eltax_config('reports').map do |report|
|
26
|
+
Luca::Jp::Chihouzei.range(*auto_range(args, params)).export_json(report)
|
27
|
+
end
|
28
|
+
puts JSON.dump(accounts)
|
26
29
|
else
|
27
|
-
|
30
|
+
Luca::Jp::Util.eltax_config('reports').each do |report|
|
31
|
+
File.open("chihouzei-#{report['jichitai_code']}#{report['jimusho_code']}.xml", 'w') { |f| f.puts(Luca::Jp::Chihouzei.range(*auto_range(args, params)).kani(report))}
|
32
|
+
end
|
28
33
|
end
|
29
34
|
end
|
30
35
|
|
@@ -32,30 +37,48 @@ class LucaCmd
|
|
32
37
|
date = "#{args[0]}-#{args[1]}-1"
|
33
38
|
Luca::Jp::Urikake.new(date).report(params[:total])
|
34
39
|
end
|
40
|
+
|
41
|
+
def self.auto_range(args, params)
|
42
|
+
case args.length
|
43
|
+
when 4
|
44
|
+
args
|
45
|
+
when 2
|
46
|
+
date = Date.new(args[0].to_i, args[1].to_i)
|
47
|
+
r = LucaBook::Util.current_fy(date, to: date)
|
48
|
+
[r[0].year, r[0].month, r[1].year, r[1].month]
|
49
|
+
when 0
|
50
|
+
date = params[:lastyear] ? Date.today.prev_year : Date.today
|
51
|
+
r = LucaBook::Util.current_fy(date)
|
52
|
+
[r[0].year, r[0].month, r[1].year, r[1].month]
|
53
|
+
end
|
54
|
+
end
|
35
55
|
end
|
36
56
|
|
37
57
|
cmd = ARGV.shift
|
38
58
|
params = {}
|
39
59
|
|
40
60
|
case cmd
|
41
|
-
when /hou?jinzei/
|
61
|
+
when 'h', /hou?jinzei/
|
42
62
|
OptionParser.new do |opt|
|
43
|
-
opt.banner = 'Usage: luca-jp houjinzei [options] yyyy mm yyyy mm'
|
63
|
+
opt.banner = 'Usage: luca-jp h|houjinzei [options] [yyyy mm yyyy mm]'
|
44
64
|
opt.on('--export', 'export json') { |_v| params[:export] = true }
|
65
|
+
opt.on('--lastyear', 'report on last Financial year') { |_v| params[:lastyear] = true }
|
45
66
|
args = opt.parse!(ARGV)
|
46
67
|
LucaCmd.houjinzei(args, params)
|
47
68
|
end
|
48
|
-
when /s[yh]ou?hizei/
|
69
|
+
when 's', /s[yh]ou?hizei/
|
49
70
|
OptionParser.new do |opt|
|
50
|
-
opt.banner = 'Usage: luca-jp syouhizei [options] yyyy mm yyyy mm'
|
71
|
+
opt.banner = 'Usage: luca-jp s|syouhizei [options] [yyyy mm yyyy mm]'
|
51
72
|
opt.on('--export', 'export json') { |_v| params[:export] = true }
|
73
|
+
opt.on('--lastyear', 'report on last Financial year') { |_v| params[:lastyear] = true }
|
52
74
|
args = opt.parse!(ARGV)
|
53
75
|
LucaCmd.syouhizei(args, params)
|
54
76
|
end
|
55
|
-
when /chihou?zei/
|
77
|
+
when 'c', /chihou?zei/
|
56
78
|
OptionParser.new do |opt|
|
57
|
-
opt.banner = 'Usage: luca-jp chihouzei [options] yyyy mm yyyy mm'
|
79
|
+
opt.banner = 'Usage: luca-jp c|chihouzei [options] [yyyy mm yyyy mm]'
|
58
80
|
opt.on('--export', 'export json') { |_v| params[:export] = true }
|
81
|
+
opt.on('--lastyear', 'report on last Financial year') { |_v| params[:lastyear] = true }
|
59
82
|
args = opt.parse!(ARGV)
|
60
83
|
LucaCmd.chihouzei(args, params)
|
61
84
|
end
|
@@ -66,4 +89,13 @@ when /urikake/
|
|
66
89
|
args = opt.parse!(ARGV)
|
67
90
|
LucaCmd.urikake(args, params)
|
68
91
|
end
|
92
|
+
else
|
93
|
+
puts 'Proper subcommand needed.'
|
94
|
+
puts
|
95
|
+
puts 'Usage: luca-jp <subcommand>'
|
96
|
+
puts ' h[oujinzei]: 法人税の計算'
|
97
|
+
puts ' s[youhizei]: 消費税の計算'
|
98
|
+
puts ' c[hihouzei]: 地方税の計算'
|
99
|
+
puts ' urikake: 勘定科目内訳明細書の売掛金リスト(CSV)'
|
100
|
+
exit 1
|
69
101
|
end
|
data/lib/luca/jp/aoiro.rb
CHANGED
@@ -27,6 +27,7 @@ module Luca
|
|
27
27
|
@issue_date = Date.today
|
28
28
|
@company = CGI.escapeHTML(config.dig('company', 'name'))
|
29
29
|
@software = 'LucaJp'
|
30
|
+
@shinkoku_kbn = '30' # 確定申告
|
30
31
|
|
31
32
|
@税額 = 税額計算
|
32
33
|
@確定法人税額 = @税額.dig(:houjin, :kokuzei)
|
@@ -51,7 +52,8 @@ module Luca
|
|
51
52
|
else
|
52
53
|
@procedure_code = 'RHO0012'
|
53
54
|
@procedure_name = '内国法人の確定申告(青色)'
|
54
|
-
@
|
55
|
+
@form_vers = proc_version
|
56
|
+
@version = @form_vers['proc']
|
55
57
|
@都道府県民税法人税割中間納付 = prepaid_tax('1859')
|
56
58
|
@都道府県民税均等割中間納付 = prepaid_tax('185A')
|
57
59
|
@都道府県民税中間納付 = @都道府県民税法人税割中間納付 + @都道府県民税均等割中間納付
|
@@ -116,6 +118,7 @@ module Luca
|
|
116
118
|
end
|
117
119
|
|
118
120
|
def 別表一
|
121
|
+
STDERR.puts "別表一: 「決算確定の日」などの追記が必要"
|
119
122
|
render_erb(search_template('beppyo1.xml.erb'))
|
120
123
|
end
|
121
124
|
|
@@ -132,22 +135,32 @@ module Luca
|
|
132
135
|
@当期純損益 = readable(@pl_data.dig('HA'))
|
133
136
|
@法人税等 = readable(@pl_data.dig('H0'))
|
134
137
|
_, @納付事業税 = 未納事業税期中増減
|
135
|
-
|
138
|
+
@当期還付事業税 = 還付事業税
|
139
|
+
@翌期還付事業税 = 中間還付税額(確定事業税, @事業税中間納付)
|
140
|
+
@別表四調整所得 = @当期純損益 + @法人税等 - @納付事業税 - @翌期還付事業税 + @当期還付事業税
|
136
141
|
|
137
142
|
@当期還付法人税 = refund_tax('1502')
|
138
143
|
@当期還付都道府県住民税 = refund_tax('1503')
|
139
|
-
@翌期還付都道府県住民税 =
|
144
|
+
@翌期還付都道府県住民税 = readable(@bs_data['1503'])
|
140
145
|
@当期還付市民税 = refund_tax('1505')
|
141
|
-
@翌期還付市民税 =
|
142
|
-
@当期還付事業税 = 還付事業税
|
146
|
+
@翌期還付市民税 = readable(@bs_data['1505']) || 0
|
143
147
|
@事業税期首残高 = 期首未納事業税 > 0 ? 期首未納事業税 : (@当期還付事業税 * -1)
|
144
|
-
@翌期還付事業税 = 中間還付税額(確定事業税, @事業税中間納付)
|
145
148
|
@仮払税金 = @翌期還付法人税 + @翌期還付都道府県住民税 + @翌期還付事業税 + @翌期還付市民税
|
146
149
|
|
147
150
|
render_erb(search_template('beppyo4.xml.erb'))
|
148
151
|
end
|
149
152
|
|
150
153
|
def 別表五一
|
154
|
+
@期首資本金 = readable(@start_balance.dig('911'))
|
155
|
+
@資本金期中減, @資本金期中増 = 純資産期中増減('911')
|
156
|
+
@期首資本準備金, @期末資本準備金 = 期首期末残高('9131')
|
157
|
+
@資本準備金期中減, @資本準備金期中増 = 純資産期中増減('9131')
|
158
|
+
@期首その他資本剰余金, @期末その他資本剰余金 = 期首期末残高('9132')
|
159
|
+
@その他資本剰余金期中減, @その他資本剰余金期中増 = 純資産期中増減('9132')
|
160
|
+
@期首自己株式, @期末自己株式 = 期首期末残高('916')
|
161
|
+
# 自己株式は負の純資産。借方集計は負の増加として認識
|
162
|
+
@自己株式期中増, @自己株式期中減 = 純資産期中増減('916').map { |t| t * -1 }
|
163
|
+
@資本金等の額期中減, @資本金等の額期中増 = 資本金等の額期中増減
|
151
164
|
render_erb(search_template('beppyo51.xml.erb'))
|
152
165
|
end
|
153
166
|
|
@@ -221,7 +234,7 @@ module Luca
|
|
221
234
|
@代表者報酬 = gaikyo('C11')
|
222
235
|
@代表者借入 = gaikyo('5121')
|
223
236
|
@概況仕入 = gaikyo('B11') + gaikyo('B12')
|
224
|
-
@概況外注費 = gaikyo('
|
237
|
+
@概況外注費 = gaikyo('C1O')
|
225
238
|
@概況人件費 = gaikyo('C11') + gaikyo('C12') + gaikyo('C13')
|
226
239
|
render_erb(search_template('gaikyo.xml.erb'))
|
227
240
|
end
|
@@ -307,7 +320,12 @@ module Luca
|
|
307
320
|
return nil if beppyo2_config('total_shares').nil?
|
308
321
|
return nil if beppyo2_config('owners').nil?
|
309
322
|
|
310
|
-
|
323
|
+
total = if beppyo2_config('own_shares').nil?
|
324
|
+
beppyo2_config('total_shares')
|
325
|
+
else
|
326
|
+
beppyo2_config('total_shares') - beppyo2_config('own_shares')
|
327
|
+
end
|
328
|
+
(別表二上位株数 * 100.0 / total).round(1)
|
311
329
|
end
|
312
330
|
|
313
331
|
def 別表二上位議決権数
|
@@ -320,7 +338,12 @@ module Luca
|
|
320
338
|
return nil if beppyo2_config('total_votes').nil?
|
321
339
|
return nil if beppyo2_config('owners').nil?
|
322
340
|
|
323
|
-
|
341
|
+
total = if beppyo2_config('no_votes').nil?
|
342
|
+
beppyo2_config('total_votes')
|
343
|
+
else
|
344
|
+
beppyo2_config('total_votes') - beppyo2_config('no_votes')
|
345
|
+
end
|
346
|
+
(別表二上位議決権数 * 100.0 / total).round(1)
|
324
347
|
end
|
325
348
|
|
326
349
|
# TODO: 特定同族会社の判定
|
@@ -444,7 +467,7 @@ module Luca
|
|
444
467
|
end
|
445
468
|
|
446
469
|
def 確定都道府県住民税
|
447
|
-
|
470
|
+
readable(@pl_data['H112']) || 0
|
448
471
|
end
|
449
472
|
|
450
473
|
def 期首未納都道府県民税
|
@@ -452,7 +475,7 @@ module Luca
|
|
452
475
|
end
|
453
476
|
|
454
477
|
def 期末未納都道府県民税
|
455
|
-
|
478
|
+
readable(@bs_data['5153']) || 0
|
456
479
|
end
|
457
480
|
|
458
481
|
def 未納都道府県民税期中増減
|
@@ -461,16 +484,15 @@ module Luca
|
|
461
484
|
end
|
462
485
|
|
463
486
|
def 都道府県民税仮払納付
|
464
|
-
[
|
465
|
-
中間還付税額(@税額.dig(:kenmin, :kintou), @都道府県民税均等割中間納付) + 中間還付税額(@税額.dig(:kenmin, :houjinzei), @都道府県民税法人税割中間納付)
|
487
|
+
readable(@bs_data['1503']) || 0
|
466
488
|
end
|
467
489
|
|
468
490
|
def 都道府県民税損金納付
|
469
|
-
[
|
491
|
+
[@都道府県民税均等割中間納付 + @都道府県民税法人税割中間納付, readable(@pl_data['H112'])||0].min
|
470
492
|
end
|
471
493
|
|
472
494
|
def 確定市民税
|
473
|
-
|
495
|
+
readable(@pl_data['H113']) || 0
|
474
496
|
end
|
475
497
|
|
476
498
|
def 期首未納市民税
|
@@ -478,7 +500,7 @@ module Luca
|
|
478
500
|
end
|
479
501
|
|
480
502
|
def 期末未納市民税
|
481
|
-
|
503
|
+
readable(@bs_data['5154']) || 0
|
482
504
|
end
|
483
505
|
|
484
506
|
def 未納市民税期中増減
|
@@ -487,15 +509,15 @@ module Luca
|
|
487
509
|
end
|
488
510
|
|
489
511
|
def 市民税仮払納付
|
490
|
-
|
512
|
+
readable(@bs_data['1505']) || 0
|
491
513
|
end
|
492
514
|
|
493
515
|
def 市民税損金納付
|
494
|
-
[
|
516
|
+
[@市民税均等割中間納付 + @市民税法人税割中間納付, readable(@pl_data['H113'])||0].min
|
495
517
|
end
|
496
518
|
|
497
519
|
def 確定事業税
|
498
|
-
|
520
|
+
readable(@pl_data['H114']) || 0
|
499
521
|
end
|
500
522
|
|
501
523
|
def 事業税損金納付
|
@@ -522,6 +544,25 @@ module Luca
|
|
522
544
|
readable((@bs_data[code] || 0) * -1)
|
523
545
|
end
|
524
546
|
|
547
|
+
def 別表五一期首資本
|
548
|
+
readable(@start_balance.dig('911')||0 + @start_balance.dig('913')||0)
|
549
|
+
end
|
550
|
+
|
551
|
+
# 資本金、資本準備金、その他資本剰余金、自己株式(控除)の合算
|
552
|
+
#
|
553
|
+
def 資本金等の額期中増減
|
554
|
+
inc = ['911', '913'].map do |code|
|
555
|
+
credit_amount(code, @start_date.year, @start_date.month, @end_date.year, @end_date.month) || 0
|
556
|
+
end
|
557
|
+
inc << (debit_amount('916', @start_date.year, @start_date.month, @end_date.year, @end_date.month)||0) * -1
|
558
|
+
dec = ['911', '913'].map do |code|
|
559
|
+
debit_amount(code, @start_date.year, @start_date.month, @end_date.year, @end_date.month) || 0
|
560
|
+
end
|
561
|
+
dec << (credit_amount('916', @start_date.year, @start_date.month, @end_date.year, @end_date.month)||0) * -1
|
562
|
+
|
563
|
+
[readable(dec.sum), readable(inc.sum)]
|
564
|
+
end
|
565
|
+
|
525
566
|
def 別表七各期青色損失
|
526
567
|
tags = @繰越損失管理.records
|
527
568
|
.filter { |record| record['start_date'] > @end_date.prev_year(10) && record['end_date'] < @start_date }
|
@@ -545,22 +586,6 @@ module Luca
|
|
545
586
|
tags.compact.join("\n")
|
546
587
|
end
|
547
588
|
|
548
|
-
def 期首資本金
|
549
|
-
readable(@start_balance.dig('911')) || 0
|
550
|
-
end
|
551
|
-
|
552
|
-
def 期末資本金
|
553
|
-
readable(@bs_data.dig('911')) || 0
|
554
|
-
end
|
555
|
-
|
556
|
-
def 別表五一期首資本
|
557
|
-
期首資本金
|
558
|
-
end
|
559
|
-
|
560
|
-
def 別表五一期末資本
|
561
|
-
期末資本金
|
562
|
-
end
|
563
|
-
|
564
589
|
def 期首未納消費税
|
565
590
|
readable(@start_balance.dig('516')) || 0
|
566
591
|
end
|
@@ -577,10 +602,10 @@ module Luca
|
|
577
602
|
|
578
603
|
def 概況源泉徴収種類
|
579
604
|
tags = []
|
580
|
-
if credit_count('5191', @start_date.year, @start_date.month, @end_date.year, @end_date.month)
|
605
|
+
if credit_count('5191', @start_date.year, @start_date.month, @end_date.year, @end_date.month) > 0
|
581
606
|
tags << render_attr('IAF03100', '<kubun_CD>1</kubun_CD>')
|
582
607
|
end
|
583
|
-
if credit_count('5193', @start_date.year, @start_date.month, @end_date.year, @end_date.month)
|
608
|
+
if credit_count('5193', @start_date.year, @start_date.month, @end_date.year, @end_date.month) > 0
|
584
609
|
tags << render_attr('IAF03200', '<kubun_CD>1</kubun_CD>')
|
585
610
|
elsif credit_count('5194', @start_date.year, @start_date.month, @end_date.year, @end_date.month)
|
586
611
|
tags << render_attr('IAF03200', '<kubun_CD>1</kubun_CD>')
|
@@ -605,7 +630,7 @@ module Luca
|
|
605
630
|
end
|
606
631
|
|
607
632
|
def 概況月外注費(idx)
|
608
|
-
gaikyo_month(idx, '
|
633
|
+
gaikyo_month(idx, 'C1O')
|
609
634
|
end
|
610
635
|
|
611
636
|
def 概況月源泉徴収(idx)
|
@@ -638,6 +663,14 @@ module Luca
|
|
638
663
|
readable(@monthly.dig(index, code) || 0)
|
639
664
|
end
|
640
665
|
|
666
|
+
def proc_version
|
667
|
+
if @end_date >= Date.parse('2021-4-1')
|
668
|
+
{ 'proc' => '21.0.2', 'HOA112' => '3.1', 'HOA116' => '2.0', 'HOA420' => '20.0', 'HOA522' => '7.0', 'HOK010' => '6.0' }
|
669
|
+
else
|
670
|
+
{ 'proc' => '20.0.2', 'HOA112' => '2.0', 'HOA116' => '1.0', 'HOA420' => '19.0', 'HOA522' => '6.0', 'HOK010' => '5.0' }
|
671
|
+
end
|
672
|
+
end
|
673
|
+
|
641
674
|
def lib_path
|
642
675
|
__dir__
|
643
676
|
end
|
data/lib/luca/jp/chihouzei.rb
CHANGED
@@ -18,26 +18,33 @@ module Luca
|
|
18
18
|
@dirname = 'journals'
|
19
19
|
@record_type = 'raw'
|
20
20
|
|
21
|
-
def kani(export: false)
|
21
|
+
def kani(report_cfg, export: false)
|
22
22
|
set_pl(4)
|
23
23
|
set_bs(4)
|
24
24
|
@issue_date = Date.today
|
25
|
-
@company = CGI.escapeHTML(config.dig('company', 'name'))
|
26
25
|
@software = 'LucaJp'
|
27
|
-
@
|
28
|
-
@
|
29
|
-
@
|
26
|
+
@jimusho_name = report_cfg['jimusho_name']
|
27
|
+
@report_category = report_cfg['type']
|
28
|
+
@employee = report_cfg['employee'] || 1
|
29
|
+
@office_count = report_cfg['office_count'] || 1
|
30
|
+
# 自治体ごとの税率カスタマイズ
|
31
|
+
@houjinzeiwari_rate = report_cfg['houjinzeiwari']
|
32
|
+
@shotoku399 = report_cfg['shotoku399']
|
33
|
+
@shotoku401 = report_cfg['shotoku401']
|
34
|
+
@shotoku801 = report_cfg['shotoku801']
|
30
35
|
|
31
36
|
@税額 = 税額計算
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
37
|
+
jichitai = @report_category == 'city' ? :shimin : :kenmin
|
38
|
+
@均等割 = report_cfg['kintouwari'] || @税額.dig(jichitai, :kintou)
|
39
|
+
@確定法人税割 = @税額.dig(jichitai, :houjinzei)
|
40
|
+
@地方特別法人事業税中間納付 = prepaid_tax('1854', @jimusho_name)
|
41
|
+
@所得割中間納付 = prepaid_tax('1855', @jimusho_name)
|
42
|
+
@法人税割中間納付 = prepaid_tax('1859', @jimusho_name)
|
43
|
+
@均等割中間納付 = prepaid_tax('185A', @jimusho_name)
|
38
44
|
@所得割 = @税額.dig(:kenmin, :shotoku)
|
39
45
|
if export
|
40
46
|
{
|
47
|
+
customer: @jimusho_name,
|
41
48
|
jigyouzei: {
|
42
49
|
shotoku: {
|
43
50
|
zeigaku: @所得割,
|
@@ -60,52 +67,78 @@ module Luca
|
|
60
67
|
}
|
61
68
|
}
|
62
69
|
else
|
70
|
+
@company = CGI.escapeHTML(config.dig('company', 'name'))
|
71
|
+
@form_vers = proc_version
|
72
|
+
@jichitai_code = report_cfg['jichitai_code']
|
73
|
+
@jimusho_code = report_cfg['jimusho_code']
|
74
|
+
@kanri_bango = report_cfg['x_houjin_bango']
|
75
|
+
@app_version = report_cfg['app_version']
|
76
|
+
@address = report_cfg['address'] || it_part_config('nozeisha_adr')
|
77
|
+
@jigyosho_name = report_cfg['name'] || '本店'
|
63
78
|
@procedure_code = 'R0102100'
|
64
79
|
@procedure_name = '法人都道府県民税・事業税・特別法人事業税又は地方法人特別税 確定申告'
|
65
|
-
@form_sec =
|
80
|
+
@form_sec = case @report_category
|
81
|
+
when 'prefecture'
|
82
|
+
["R0102AA#{@form_vers['R0102AA']}", 別表九フォーム]
|
83
|
+
.compact.map{ |c| form_attr(c) }.join('')
|
84
|
+
when '23ku'
|
85
|
+
["R0102AA#{@form_vers['R0102AA']}", "R0102AG120", 別表九フォーム]
|
86
|
+
.compact.map{ |c| form_attr(c) }.join('')
|
87
|
+
when 'city'
|
88
|
+
["R0504AA180"].compact.map{ |c| form_attr(c) }.join('')
|
89
|
+
end
|
66
90
|
@user_inf = render_erb(search_template('eltax-userinf.xml.erb'))
|
67
|
-
@form_data =
|
91
|
+
@form_data = case @report_category
|
92
|
+
when 'prefecture'
|
93
|
+
[第六号, 別表九].compact.join("\n")
|
94
|
+
when '23ku'
|
95
|
+
[第六号, 別表四三, 別表九].compact.join("\n")
|
96
|
+
when 'city'
|
97
|
+
[第二十号].compact.join("\n")
|
98
|
+
end
|
68
99
|
render_erb(search_template('eltax.xml.erb'))
|
69
100
|
end
|
70
101
|
end
|
71
102
|
|
72
|
-
def export_json
|
73
|
-
records = kani(export: true)
|
74
|
-
|
75
|
-
|
103
|
+
def export_json(report_cfg)
|
104
|
+
records = kani(report_cfg, export: true)
|
105
|
+
label = @report_category == 'city' ? '市町村住民税' : '都道府県住民税'
|
106
|
+
{}.tap do |item|
|
76
107
|
item['date'] = @end_date
|
77
108
|
item['debit'] = []
|
78
109
|
item['credit'] = []
|
79
|
-
|
80
|
-
|
81
|
-
|
110
|
+
unless @report_category == 'city'
|
111
|
+
records[:jigyouzei].each do |k, dat|
|
112
|
+
if dat[:chukan] > 0
|
113
|
+
item['credit'] << { 'label' => karibarai_label(k), 'amount' => dat[:chukan] }
|
114
|
+
end
|
115
|
+
if dat[:chukan] > dat[:zeigaku]
|
116
|
+
item['debit'] << { 'label' => '未収地方事業税', 'amount' => dat[:chukan] - dat[:zeigaku] }
|
117
|
+
else
|
118
|
+
item['credit'] << { 'label' => '未払地方事業税', 'amount' => dat[:zeigaku] - dat[:chukan] }
|
119
|
+
end
|
120
|
+
item['debit'] << { 'label' => '地方事業税', 'amount' => dat[:zeigaku] } if dat[:zeigaku] > 0
|
82
121
|
end
|
83
|
-
if dat[:chukan] > dat[:zeigaku]
|
84
|
-
item['debit'] << { 'label' => '未収地方事業税', 'amount' => dat[:chukan] - dat[:zeigaku] }
|
85
|
-
else
|
86
|
-
item['credit'] << { 'label' => '未払地方事業税', 'amount' => dat[:zeigaku] - dat[:chukan] }
|
87
|
-
end
|
88
|
-
item['debit'] << { 'label' => '法人税、住民税及び事業税', 'amount' => dat[:zeigaku] } if dat[:zeigaku] > 0
|
89
122
|
end
|
90
123
|
records[:juminzei].each do |k, dat|
|
91
124
|
if dat[:chukan] > 0
|
92
125
|
item['credit'] << { 'label' => karibarai_label(k), 'amount' => dat[:chukan] }
|
93
126
|
end
|
94
127
|
if dat[:chukan] > dat[:zeigaku]
|
95
|
-
item['debit'] << { 'label' =>
|
128
|
+
item['debit'] << { 'label' => "未収#{label}", 'amount' => dat[:chukan] - dat[:zeigaku] }
|
96
129
|
else
|
97
|
-
item['credit'] << { 'label' =>
|
130
|
+
item['credit'] << { 'label' => "未払#{label}", 'amount' => dat[:zeigaku] - dat[:chukan] }
|
98
131
|
end
|
99
|
-
item['debit'] << { 'label' =>
|
132
|
+
item['debit'] << { 'label' => label, 'amount' => dat[:zeigaku] } if dat[:zeigaku] > 0
|
100
133
|
end
|
134
|
+
item['x-customer'] = records[:customer] unless records[:customer].nil?
|
101
135
|
item['x-editor'] = 'LucaJp'
|
102
|
-
res << item
|
103
|
-
puts JSON.dump(res)
|
104
136
|
end
|
105
137
|
end
|
106
138
|
|
107
139
|
def 第六号
|
108
|
-
@資本金準備金 =
|
140
|
+
@資本金準備金 = readable(['911', '9131'].map { |cd| @bs_data.dig(cd) }.compact.sum)
|
141
|
+
STDERR.puts "第六号様式: 「決算確定の日」「国外関連者」などの追記が必要"
|
109
142
|
render_erb(search_template('el-no6.xml.erb'))
|
110
143
|
end
|
111
144
|
|
@@ -114,10 +147,15 @@ module Luca
|
|
114
147
|
render_erb(search_template('el-no6-43.xml.erb'))
|
115
148
|
end
|
116
149
|
|
150
|
+
def 第二十号
|
151
|
+
@資本金準備金 = readable(['911', '9131'].map { |cd| @bs_data.dig(cd) }.compact.sum)
|
152
|
+
render_erb(search_template('el-no20.xml.erb'))
|
153
|
+
end
|
154
|
+
|
117
155
|
def 別表九フォーム
|
118
156
|
return nil if @繰越損失管理.records.length == 0
|
119
157
|
|
120
|
-
'
|
158
|
+
"R0102AM#{@form_vers['R0102AM']}"
|
121
159
|
end
|
122
160
|
|
123
161
|
def 別表九
|
@@ -129,7 +167,13 @@ module Luca
|
|
129
167
|
private
|
130
168
|
|
131
169
|
def 法人税割課税標準
|
132
|
-
(
|
170
|
+
case Luca::Jp::Util.eltax_config('reports')
|
171
|
+
.filter { |r| レポート種別.include?(r['type']) }.length
|
172
|
+
when 0, 1
|
173
|
+
(@税額.dig(:houjin, :kokuzei) / 1000).floor * 1000
|
174
|
+
else
|
175
|
+
従業員数による分割課税標準 @税額.dig(:houjin, :kokuzei)
|
176
|
+
end
|
133
177
|
end
|
134
178
|
|
135
179
|
def 事業税中間納付
|
@@ -205,6 +249,14 @@ module Luca
|
|
205
249
|
end
|
206
250
|
end
|
207
251
|
|
252
|
+
def proc_version
|
253
|
+
if @start_date >= Date.parse('2020-4-1')
|
254
|
+
{ 'R0102AA' => '200', 'R0102AM' => '200' }
|
255
|
+
else
|
256
|
+
{ 'R0102AA' => '190', 'R0102AM' => '190' }
|
257
|
+
end
|
258
|
+
end
|
259
|
+
|
208
260
|
def lib_path
|
209
261
|
__dir__
|
210
262
|
end
|