luca-jp 0.2.3 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/exe/luca-jp +7 -2
- data/lib/luca/jp/aoiro.rb +62 -26
- data/lib/luca/jp/chihouzei.rb +44 -17
- data/lib/luca/jp/common.rb +97 -19
- 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-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 +19 -17
- 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 +17 -0
- data/lib/luca/jp/version.rb +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4397cf29a4b348c06c854a7317bf1c7a63feef296635ffe5d8cc8ab237a5ca86
|
4
|
+
data.tar.gz: 8f0e650b20dcd79af950dfaf09b3e5df4f7e32094651d3661fe7f232c58685fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 25b4554065a779fee709b1f32e0120cfddf0ce23fa80397ff470f54d2a20604246781dee7c29c8f565477fedb32aa37a18398053b2411d92db1dd4e6002ce123
|
7
|
+
data.tar.gz: ba9dd2935aba7e2609278732f1db875d0896587db70605519282f94eca98264e0f51cc2d2f25ab12249477750c4debfcf74d73b472679367429a25dad2ffb9a1
|
data/exe/luca-jp
CHANGED
@@ -22,9 +22,14 @@ class LucaCmd
|
|
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(*args).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(*args).kani(report))}
|
32
|
+
end
|
28
33
|
end
|
29
34
|
end
|
30
35
|
|
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
|
@翌期還付都道府県住民税 = 中間還付税額(@税額.dig(:kenmin, :kintou), @都道府県民税均等割中間納付) + 中間還付税額(@税額.dig(:kenmin, :houjinzei), @都道府県民税法人税割中間納付)
|
140
145
|
@当期還付市民税 = refund_tax('1505')
|
141
146
|
@翌期還付市民税 = 中間還付税額(@税額.dig(:shimin, :kintou), @市民税均等割中間納付) + 中間還付税額(@税額.dig(:shimin, :houjinzei), @市民税法人税割中間納付)
|
142
|
-
@当期還付事業税 = 還付事業税
|
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,13 +338,20 @@ 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: 特定同族会社の判定
|
327
350
|
#
|
328
351
|
def 同族会社?
|
352
|
+
return nil if it_part_config('shihon_kin').nil?
|
329
353
|
return nil if it_part_config('shihon_kin') > 100_000_000
|
354
|
+
return nil if 別表二上位議決権割合.nil? || 別表二上位株割合.nil?
|
330
355
|
|
331
356
|
return true if 別表二上位議決権割合 > 50 || 別表二上位株割合 > 50
|
332
357
|
false
|
@@ -520,6 +545,25 @@ module Luca
|
|
520
545
|
readable((@bs_data[code] || 0) * -1)
|
521
546
|
end
|
522
547
|
|
548
|
+
def 別表五一期首資本
|
549
|
+
readable(@start_balance.dig('911')||0 + @start_balance.dig('913')||0)
|
550
|
+
end
|
551
|
+
|
552
|
+
# 資本金、資本準備金、その他資本剰余金、自己株式(控除)の合算
|
553
|
+
#
|
554
|
+
def 資本金等の額期中増減
|
555
|
+
inc = ['911', '913'].map do |code|
|
556
|
+
credit_amount(code, @start_date.year, @start_date.month, @end_date.year, @end_date.month) || 0
|
557
|
+
end
|
558
|
+
inc << (debit_amount('916', @start_date.year, @start_date.month, @end_date.year, @end_date.month)||0) * -1
|
559
|
+
dec = ['911', '913'].map do |code|
|
560
|
+
debit_amount(code, @start_date.year, @start_date.month, @end_date.year, @end_date.month) || 0
|
561
|
+
end
|
562
|
+
dec << (credit_amount('916', @start_date.year, @start_date.month, @end_date.year, @end_date.month)||0) * -1
|
563
|
+
|
564
|
+
[readable(dec.sum), readable(inc.sum)]
|
565
|
+
end
|
566
|
+
|
523
567
|
def 別表七各期青色損失
|
524
568
|
tags = @繰越損失管理.records
|
525
569
|
.filter { |record| record['start_date'] > @end_date.prev_year(10) && record['end_date'] < @start_date }
|
@@ -543,22 +587,6 @@ module Luca
|
|
543
587
|
tags.compact.join("\n")
|
544
588
|
end
|
545
589
|
|
546
|
-
def 期首資本金
|
547
|
-
readable(@start_balance.dig('911')) || 0
|
548
|
-
end
|
549
|
-
|
550
|
-
def 期末資本金
|
551
|
-
readable(@bs_data.dig('911')) || 0
|
552
|
-
end
|
553
|
-
|
554
|
-
def 別表五一期首資本
|
555
|
-
期首資本金
|
556
|
-
end
|
557
|
-
|
558
|
-
def 別表五一期末資本
|
559
|
-
期末資本金
|
560
|
-
end
|
561
|
-
|
562
590
|
def 期首未納消費税
|
563
591
|
readable(@start_balance.dig('516')) || 0
|
564
592
|
end
|
@@ -575,10 +603,10 @@ module Luca
|
|
575
603
|
|
576
604
|
def 概況源泉徴収種類
|
577
605
|
tags = []
|
578
|
-
if credit_count('5191', @start_date.year, @start_date.month, @end_date.year, @end_date.month)
|
606
|
+
if credit_count('5191', @start_date.year, @start_date.month, @end_date.year, @end_date.month) > 0
|
579
607
|
tags << render_attr('IAF03100', '<kubun_CD>1</kubun_CD>')
|
580
608
|
end
|
581
|
-
if credit_count('5193', @start_date.year, @start_date.month, @end_date.year, @end_date.month)
|
609
|
+
if credit_count('5193', @start_date.year, @start_date.month, @end_date.year, @end_date.month) > 0
|
582
610
|
tags << render_attr('IAF03200', '<kubun_CD>1</kubun_CD>')
|
583
611
|
elsif credit_count('5194', @start_date.year, @start_date.month, @end_date.year, @end_date.month)
|
584
612
|
tags << render_attr('IAF03200', '<kubun_CD>1</kubun_CD>')
|
@@ -603,7 +631,7 @@ module Luca
|
|
603
631
|
end
|
604
632
|
|
605
633
|
def 概況月外注費(idx)
|
606
|
-
gaikyo_month(idx, '
|
634
|
+
gaikyo_month(idx, 'C1O')
|
607
635
|
end
|
608
636
|
|
609
637
|
def 概況月源泉徴収(idx)
|
@@ -636,6 +664,14 @@ module Luca
|
|
636
664
|
readable(@monthly.dig(index, code) || 0)
|
637
665
|
end
|
638
666
|
|
667
|
+
def proc_version
|
668
|
+
if @end_date >= Date.parse('2021-4-1')
|
669
|
+
{ 'proc' => '21.0.2', 'HOA112' => '3.1', 'HOA116' => '2.0', 'HOA420' => '20.0', 'HOA522' => '7.0', 'HOK010' => '6.0' }
|
670
|
+
else
|
671
|
+
{ 'proc' => '20.0.2', 'HOA112' => '2.0', 'HOA116' => '1.0', 'HOA420' => '19.0', 'HOA522' => '6.0', 'HOK010' => '5.0' }
|
672
|
+
end
|
673
|
+
end
|
674
|
+
|
639
675
|
def lib_path
|
640
676
|
__dir__
|
641
677
|
end
|
data/lib/luca/jp/chihouzei.rb
CHANGED
@@ -18,20 +18,17 @@ 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
|
-
@app_version = eltax_config('app_version')
|
26
|
+
@report_category = report_cfg['type']
|
27
|
+
@employee = report_cfg['employee'] || 1
|
30
28
|
|
31
29
|
@税額 = 税額計算
|
32
30
|
@均等割 = @税額.dig(:kenmin, :kintou)
|
33
|
-
|
34
|
-
@確定法人税割 = (@税額.dig(:kenmin, :houjinzei) / 100).floor * 100
|
31
|
+
@確定法人税割 = @税額.dig(:kenmin, :houjinzei)
|
35
32
|
@地方特別法人事業税中間納付 = prepaid_tax('1854')
|
36
33
|
@所得割中間納付 = prepaid_tax('1855')
|
37
34
|
@法人税割中間納付 = prepaid_tax('1859')
|
@@ -61,19 +58,42 @@ module Luca
|
|
61
58
|
}
|
62
59
|
}
|
63
60
|
else
|
61
|
+
@company = CGI.escapeHTML(config.dig('company', 'name'))
|
62
|
+
@form_vers = proc_version
|
63
|
+
@jichitai_code = report_cfg['jichitai_code']
|
64
|
+
@jimusho_code = report_cfg['jimusho_code']
|
65
|
+
@jimusho_name = report_cfg['jimusho_name']
|
66
|
+
@kanri_bango = report_cfg['x_houjin_bango']
|
67
|
+
@app_version = report_cfg['app_version']
|
68
|
+
@address = report_cfg['address'] || it_part_config('nozeisha_adr')
|
64
69
|
@procedure_code = 'R0102100'
|
65
70
|
@procedure_name = '法人都道府県民税・事業税・特別法人事業税又は地方法人特別税 確定申告'
|
66
|
-
@form_sec =
|
71
|
+
@form_sec = case @report_category
|
72
|
+
when 'prefecture'
|
73
|
+
["R0102AA#{@form_vers['R0102AA']}", 別表九フォーム]
|
74
|
+
.compact.map{ |c| form_attr(c) }.join('')
|
75
|
+
when '23ku'
|
76
|
+
["R0102AA#{@form_vers['R0102AA']}", "R0102AG120", 別表九フォーム]
|
77
|
+
.compact.map{ |c| form_attr(c) }.join('')
|
78
|
+
when 'city'
|
79
|
+
# TODO: implement
|
80
|
+
end
|
67
81
|
@user_inf = render_erb(search_template('eltax-userinf.xml.erb'))
|
68
|
-
@form_data =
|
82
|
+
@form_data = case @report_category
|
83
|
+
when 'prefecture'
|
84
|
+
[第六号, 別表九].compact.join("\n")
|
85
|
+
when '23ku'
|
86
|
+
[第六号, 別表四三, 別表九].compact.join("\n")
|
87
|
+
when 'city'
|
88
|
+
# TODO: implement
|
89
|
+
end
|
69
90
|
render_erb(search_template('eltax.xml.erb'))
|
70
91
|
end
|
71
92
|
end
|
72
93
|
|
73
|
-
def export_json
|
74
|
-
records = kani(export: true)
|
75
|
-
|
76
|
-
item = {}
|
94
|
+
def export_json(report_cfg)
|
95
|
+
records = kani(report_cfg, export: true)
|
96
|
+
{}.tap do |item|
|
77
97
|
item['date'] = @end_date
|
78
98
|
item['debit'] = []
|
79
99
|
item['credit'] = []
|
@@ -100,13 +120,12 @@ module Luca
|
|
100
120
|
item['debit'] << { 'label' => '法人税、住民税及び事業税', 'amount' => dat[:zeigaku] } if dat[:zeigaku] > 0
|
101
121
|
end
|
102
122
|
item['x-editor'] = 'LucaJp'
|
103
|
-
res << item
|
104
|
-
puts JSON.dump(res)
|
105
123
|
end
|
106
124
|
end
|
107
125
|
|
108
126
|
def 第六号
|
109
|
-
@資本金準備金 =
|
127
|
+
@資本金準備金 = readable(['911', '9131'].map { |cd| @bs_data.dig(cd) }.compact.sum)
|
128
|
+
STDERR.puts "第六号様式: 「決算確定の日」「国外関連者」などの追記が必要"
|
110
129
|
render_erb(search_template('el-no6.xml.erb'))
|
111
130
|
end
|
112
131
|
|
@@ -118,7 +137,7 @@ module Luca
|
|
118
137
|
def 別表九フォーム
|
119
138
|
return nil if @繰越損失管理.records.length == 0
|
120
139
|
|
121
|
-
'
|
140
|
+
"R0102AM#{@form_vers['R0102AM']}"
|
122
141
|
end
|
123
142
|
|
124
143
|
def 別表九
|
@@ -206,6 +225,14 @@ module Luca
|
|
206
225
|
end
|
207
226
|
end
|
208
227
|
|
228
|
+
def proc_version
|
229
|
+
if @start_date >= Date.parse('2020-4-1')
|
230
|
+
{ 'R0102AA' => '200', 'R0102AM' => '200' }
|
231
|
+
else
|
232
|
+
{ 'R0102AA' => '190', 'R0102AM' => '190' }
|
233
|
+
end
|
234
|
+
end
|
235
|
+
|
209
236
|
def lib_path
|
210
237
|
__dir__
|
211
238
|
end
|
data/lib/luca/jp/common.rb
CHANGED
@@ -74,11 +74,12 @@ module Luca
|
|
74
74
|
|
75
75
|
# 税引前当期利益をもとに計算
|
76
76
|
# 消費税を租税公課に計上している場合、控除済みの金額
|
77
|
-
#
|
77
|
+
# 事業税は仮払経理の場合にも納付時損金/還付時益金
|
78
78
|
#
|
79
79
|
def 当期所得金額
|
80
80
|
_, 納付事業税 = 未納事業税期中増減
|
81
|
-
|
81
|
+
事業税中間納付 = prepaid_tax('1854') + prepaid_tax('1855') + prepaid_tax('1856') + prepaid_tax('1857') + prepaid_tax('1858')
|
82
|
+
LucaSupport::Code.readable(@pl_data.dig('GA') - 納付事業税 - 事業税中間納付 + 還付事業税)
|
82
83
|
end
|
83
84
|
|
84
85
|
# -----------------------------------------------------
|
@@ -112,24 +113,56 @@ module Luca
|
|
112
113
|
# -----------------------------------------------------
|
113
114
|
|
114
115
|
def 均等割
|
115
|
-
if
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
116
|
+
tax = if 地方税資本金等の額 <= 10_000_000
|
117
|
+
city = @employee > 50 ? 120_000 : 50_000
|
118
|
+
[20_000, city]
|
119
|
+
elsif 地方税資本金等の額 <= 100_000_000
|
120
|
+
city = @employee > 50 ? 150_000 : 130_000
|
121
|
+
[50_000, city]
|
122
|
+
elsif 地方税資本金等の額 <= 1_000_000_000
|
123
|
+
city = @employee > 50 ? 400_000 : 160_000
|
124
|
+
[130_000, city]
|
125
|
+
elsif 地方税資本金等の額 <= 5_000_000_000
|
126
|
+
city = @employee > 50 ? 1_750_000 : 410_000
|
127
|
+
[540_000, city]
|
128
|
+
else
|
129
|
+
city = @employee > 50 ? 3_000_000 : 410_000
|
130
|
+
[800_000, city]
|
131
|
+
end
|
132
|
+
tokyo23? ? [tax.sum, 0] : tax
|
120
133
|
end
|
121
134
|
|
135
|
+
# 100円未満切り捨て
|
122
136
|
def 法人税割(法人税 = nil)
|
123
137
|
課税標準 = if 法人税
|
124
138
|
(法人税 / 1000).floor * 1000
|
125
139
|
else
|
126
|
-
|
140
|
+
法人税割課税標準
|
127
141
|
end
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
142
|
+
税率 = 法人税割税率(課税標準)
|
143
|
+
[
|
144
|
+
(課税標準 * 税率[0] / 100 / 100).floor * 100,
|
145
|
+
(課税標準 * 税率[1] / 100 / 100).floor * 100
|
146
|
+
]
|
147
|
+
end
|
148
|
+
|
149
|
+
def 法人税割税率(法人税 = nil)
|
150
|
+
課税標準 = if 法人税
|
151
|
+
(法人税 / 1000).floor * 1000
|
152
|
+
else
|
153
|
+
法人税割課税標準
|
154
|
+
end
|
155
|
+
rate = if 期末資本金 > 100_000_000 || 課税標準 > 10_000_000
|
156
|
+
[2.0, 8.4]
|
157
|
+
else
|
158
|
+
[1.0, 6.0]
|
159
|
+
end
|
160
|
+
tokyo23? ? [rate.sum, 0] : rate
|
161
|
+
end
|
162
|
+
|
163
|
+
# 100円未満切り捨て
|
164
|
+
def 所得割400万以下(所得 = nil)
|
165
|
+
((所得400万以下(所得) * 所得割税率400万以下(所得) / 100) / 100).floor * 100
|
133
166
|
end
|
134
167
|
|
135
168
|
def 所得400万以下(所得 = nil)
|
@@ -143,8 +176,18 @@ module Luca
|
|
143
176
|
end
|
144
177
|
end
|
145
178
|
|
146
|
-
def
|
147
|
-
|
179
|
+
def 所得割税率400万以下(所得 = nil)
|
180
|
+
所得 ||= 所得金額
|
181
|
+
if 期末資本金 > 100_000_000 || 所得 > 25_000_000
|
182
|
+
軽減税率不適用法人 ? 7.48 : 3.75
|
183
|
+
else
|
184
|
+
軽減税率不適用法人 ? 7.0 : 3.5
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
# 100円未満切り捨て
|
189
|
+
def 所得割800万以下(所得 = 0)
|
190
|
+
((所得800万以下(所得) * 所得割税率800万以下(所得) / 100) / 100).floor * 100
|
148
191
|
end
|
149
192
|
|
150
193
|
def 所得800万以下(所得 = nil)
|
@@ -160,8 +203,18 @@ module Luca
|
|
160
203
|
end
|
161
204
|
end
|
162
205
|
|
163
|
-
def
|
164
|
-
|
206
|
+
def 所得割税率800万以下(所得 = nil)
|
207
|
+
所得 ||= 所得金額
|
208
|
+
if 期末資本金 > 100_000_000 || 所得 > 25_000_000
|
209
|
+
軽減税率不適用法人 ? 7.48 : 5.665
|
210
|
+
else
|
211
|
+
軽減税率不適用法人 ? 7.0 : 5.3
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
215
|
+
# 100円未満切り捨て
|
216
|
+
def 所得割800万超(所得 = 0)
|
217
|
+
((所得800万超(所得) * 所得割税率800万超(所得) / 100) / 100).floor * 100
|
165
218
|
end
|
166
219
|
|
167
220
|
def 所得800万超(所得 = nil)
|
@@ -175,10 +228,16 @@ module Luca
|
|
175
228
|
end
|
176
229
|
end
|
177
230
|
|
178
|
-
def
|
179
|
-
|
231
|
+
def 所得割税率800万超(所得 = nil)
|
232
|
+
所得 ||= 所得金額
|
233
|
+
if 期末資本金 > 100_000_000 || 所得 > 25_000_000
|
234
|
+
7.48
|
235
|
+
else
|
236
|
+
7.0
|
237
|
+
end
|
180
238
|
end
|
181
239
|
|
240
|
+
# 100円未満切り捨て
|
182
241
|
def 地方法人特別税(事業税)
|
183
242
|
((事業税 * 37 / 100) / 100).floor * 100
|
184
243
|
end
|
@@ -224,6 +283,25 @@ module Luca
|
|
224
283
|
def 地方消費税中間納付額
|
225
284
|
prepaid_tax('185C')
|
226
285
|
end
|
286
|
+
|
287
|
+
# -----------------------------------------------------
|
288
|
+
# :section: 外形標準の計算
|
289
|
+
# -----------------------------------------------------
|
290
|
+
def 資本金等の額
|
291
|
+
readable(['911', '913', '916'].map { |cd| @bs_data.dig(cd) }.compact.sum)
|
292
|
+
end
|
293
|
+
|
294
|
+
def 地方税資本金等の額
|
295
|
+
[資本金等の額, readable(['911', '9131'].map { |cd| @bs_data.dig(cd) }.compact.sum)].max
|
296
|
+
end
|
297
|
+
|
298
|
+
def 軽減税率不適用法人
|
299
|
+
期末資本金 > 10_000_000 && eltax_config('no_keigen')
|
300
|
+
end
|
301
|
+
|
302
|
+
def 期末資本金
|
303
|
+
readable(@bs_data.dig('911'))
|
304
|
+
end
|
227
305
|
end
|
228
306
|
end
|
229
307
|
end
|
data/lib/luca/jp/it_part.rb
CHANGED
@@ -24,7 +24,7 @@ module Luca
|
|
24
24
|
entries << %Q(<TETSUZUKI ID="TETSUZUKI"><procedure_CD>#{@procedure_code}</procedure_CD><procedure_NM>#{@procedure_name}</procedure_NM></TETSUZUKI>)
|
25
25
|
entries.concat([jigyo_nendo_from, jigyo_nendo_to, kazei_kikan_from, kazei_kikan_to])
|
26
26
|
entries << render_it_tag('keiri_sekininsha')
|
27
|
-
entries <<
|
27
|
+
entries << %Q(<SHINKOKU_KBN ID="SHINKOKU_KBN"><kubun_CD>#{@shinkoku_kbn}</kubun_CD></SHINKOKU_KBN>)
|
28
28
|
entries.concat(['eltax_id'].map{ |key| render_it_tag(key) })
|
29
29
|
entries << '</IT>'
|
30
30
|
entries.compact.join("\n")
|
data/lib/luca/jp/syouhizei.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 = '1' # 確定申告
|
30
31
|
税率 = BigDecimal('7.8') # percent
|
31
32
|
地方税率 = BigDecimal('2.2')
|
32
33
|
|
@@ -52,7 +53,8 @@ module Luca
|
|
52
53
|
else
|
53
54
|
@procedure_code = 'RSH0040'
|
54
55
|
@procedure_name = '消費税及び地方消費税申告(簡易課税・法人)'
|
55
|
-
@
|
56
|
+
@form_vers = proc_version
|
57
|
+
@version = @form_vers['proc']
|
56
58
|
@form_sec = ['SHA020', 'SHB047', 'SHB067'].map{ |c| form_rdf(c) }.join('')
|
57
59
|
@it = it_part
|
58
60
|
@form_data = [申告書簡易課税, 付表四の三, 付表五の三].join("\n")
|
@@ -142,6 +144,14 @@ module Luca
|
|
142
144
|
render_attr(tags[0], [amount, share].join(''))
|
143
145
|
end
|
144
146
|
|
147
|
+
def proc_version
|
148
|
+
if @end_date >= Date.parse('2021-4-1')
|
149
|
+
{ 'proc' => '20.0.1', 'SHA020' => '7.1' }
|
150
|
+
else
|
151
|
+
{ 'proc' => '20.0.0', 'SHA020' => '7.0' }
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
145
155
|
def lib_path
|
146
156
|
__dir__
|
147
157
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<HOA116 page="1" VR="
|
1
|
+
<HOA116 page="1" VR="<%= @form_vers['HOA116'] %>" id="HOA116" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
|
2
2
|
|
3
3
|
<QHA00000><QHA00010>
|
4
4
|
<QHA00020 IDREF="JIGYO_NENDO_FROM"/>
|
@@ -24,7 +24,9 @@
|
|
24
24
|
<QHC00000>
|
25
25
|
<%= render_attr('QHC00010', @地方法人税課税標準) %>
|
26
26
|
<QHC00030>
|
27
|
-
|
27
|
+
<% if @form_vers['HOA116'] == '1.0' %>
|
28
|
+
<QHC00040><kubun_CD>2</kubun_CD></QHC00040><%# 10.3% %>
|
29
|
+
<% end %>
|
28
30
|
<%= render_attr('QHC00050', 地方法人税額(@地方法人税課税標準)) %>
|
29
31
|
</QHC00030>
|
30
32
|
</QHC00000>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<HOA112 page="1" VR="
|
1
|
+
<HOA112 page="1" VR="<%= @form_vers['HOA112'] %>" id="HOA112" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
|
2
2
|
<BGA00000>
|
3
3
|
<BGA00010 IDREF="TEISYUTSU_DAY"/>
|
4
4
|
<BGA00020 IDREF="ZEIMUSHO"/>
|
@@ -7,10 +7,12 @@
|
|
7
7
|
<VAA00040 IDREF="NOZEISHA_NM"/>
|
8
8
|
</VAA00000>
|
9
9
|
<VAB00000>
|
10
|
+
<%= render_attr('VAB00005', beppyo2_config('own_shares')) %>
|
10
11
|
<%= render_attr('VAB00010', beppyo2_config('total_shares')) %>
|
11
12
|
<%= render_attr('VAB00020', 別表二上位株数) %>
|
12
13
|
<%= render_attr('VAB00030', 別表二上位株割合) %>
|
13
14
|
<VAB00040>
|
15
|
+
<%= render_attr('VAB00050', beppyo2_config('no_votes')) %>
|
14
16
|
<%= render_attr('VAB00060', beppyo2_config('total_votes')) %>
|
15
17
|
</VAB00040>
|
16
18
|
<%= render_attr('VAB00070', 別表二上位議決権数) %>
|