luca-jp 0.14.2 → 0.16.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 +2 -1
- data/lib/luca/jp/aoiro.rb +32 -18
- data/lib/luca/jp/chihouzei.rb +9 -7
- data/lib/luca/jp/templates/beppyo1-next.xml.erb +3 -0
- data/lib/luca/jp/templates/beppyo1.xml.erb +12 -2
- data/lib/luca/jp/templates/beppyo15.xml.erb +1 -1
- data/lib/luca/jp/templates/beppyo4.xml.erb +13 -4
- data/lib/luca/jp/templates/beppyo51.xml.erb +2 -1
- data/lib/luca/jp/templates/beppyo52.xml.erb +1 -0
- data/lib/luca/jp/templates/beppyo7.xml.erb +1 -1
- data/lib/luca/jp/templates/el-no6-43.xml.erb +34 -30
- data/lib/luca/jp/templates/el-no6.xml.erb +2 -1
- data/lib/luca/jp/templates/tekiyougaku.xml.erb +2 -2
- data/lib/luca/jp/templates/yakuin-meisai.xml.erb +9 -0
- data/lib/luca/jp/templates/zatsueki-meisai.xml.erb +16 -0
- data/lib/luca/jp/uchiwake.rb +57 -0
- data/lib/luca/jp/urikake.rb +5 -2
- data/lib/luca/jp/version.rb +1 -1
- data/lib/luca_salary/jp.rb +95 -12
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ca379cda7bf415ef81ed4c7c72da443f1565f6b34e1bfad2e93c842aa71c011f
|
4
|
+
data.tar.gz: 8b5143397b416820bce2337169f4ff90b936bb712477b28bf3e5b2c457347471
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8e3812b030abf84a467eb10689c6dd9bd15b5265cbfcbf4ba2993a258b0c5a55454c276b69f95e23bdd07be93336d107d2de8360a4c6169559eded86eaecb502
|
7
|
+
data.tar.gz: 82f9f7fee16b38b1dbb63980a5a30e1ea9499bedb55608d93c3a759dd2e872df080e0c1a5ac3f776fa201cddc463c4af3fff88ccad3423311870a4591567c170
|
data/exe/luca-jp
CHANGED
@@ -37,7 +37,7 @@ class LucaCmd
|
|
37
37
|
|
38
38
|
def self.urikake(args, params)
|
39
39
|
date = "#{args[0]}-#{args[1]}-1"
|
40
|
-
Luca::Jp::Urikake.new(date).report(params[:total])
|
40
|
+
Luca::Jp::Urikake.new(date).report(params[:total], params[:encode])
|
41
41
|
end
|
42
42
|
|
43
43
|
def self.auto_range(args, params)
|
@@ -97,6 +97,7 @@ when /urikake/
|
|
97
97
|
OptionParser.new do |opt|
|
98
98
|
opt.banner = 'Usage: luca-jp urikake [options] yyyy mm'
|
99
99
|
opt.on('--total VAL', '売掛金総額') { |v| params[:total] = v&.to_i }
|
100
|
+
opt.on('--utf8', 'UTF-8でファイル生成') { |_v| params[:encode] = 'UTF-8' }
|
100
101
|
args = opt.parse!(ARGV)
|
101
102
|
LucaCmd.urikake(args, params)
|
102
103
|
end
|
data/lib/luca/jp/aoiro.rb
CHANGED
@@ -64,13 +64,14 @@ module Luca
|
|
64
64
|
@都道府県民税期中増, @都道府県民税期中減 = 未納都道府県民税期中増減
|
65
65
|
@市民税期中増, @市民税期中減 = 未納市民税期中増減
|
66
66
|
@事業税期中増, @事業税期中減 = 未納事業税期中増減
|
67
|
-
@事業税中間納付 =
|
67
|
+
@事業税中間納付 = ['1854', '1855', '1856', '1857', '1858']
|
68
|
+
.map{ |k| prepaid_tax(k) }.compact.sum
|
68
69
|
@翌期還付法人税 = 中間還付税額(@確定法人税額 + @確定地方法人税額, @法人税中間納付 + @地方法人税中間納付)
|
69
70
|
@概況売上 = gaikyo('A0')
|
70
71
|
@form_sec = [
|
71
72
|
'HOA112', 'HOA116', 'HOA201', 'HOA420', 'HOA511', 'HOA522', 別表七フォーム,
|
72
73
|
'HOE200', 適用額明細フォーム,
|
73
|
-
'HOI010', 有価証券内訳フォーム, 買掛金内訳フォーム, 'HOI100', 借入金内訳フォーム, 'HOI141', 地代家賃内訳フォーム,
|
74
|
+
'HOI010', 有価証券内訳フォーム, 買掛金内訳フォーム, 'HOI100', 借入金内訳フォーム, 'HOI141', 地代家賃内訳フォーム, 雑益雑損失内訳フォーム,
|
74
75
|
'HOK010'
|
75
76
|
].compact.map{ |c| form_rdf(c) }.join('')
|
76
77
|
#@extra_form_sec = ['HOI040']
|
@@ -78,7 +79,7 @@ module Luca
|
|
78
79
|
@form_data = [
|
79
80
|
別表一, 別表一次葉, 別表二, 別表四簡易, 別表五一, 別表五二, 別表七, 別表十五,
|
80
81
|
適用額明細,
|
81
|
-
預貯金内訳, 有価証券内訳, 買掛金内訳, 仮受金内訳, 借入金内訳, 役員報酬内訳, 地代家賃内訳,
|
82
|
+
預貯金内訳, 有価証券内訳, 買掛金内訳, 仮受金内訳, 借入金内訳, 役員報酬内訳, 地代家賃内訳, 雑益雑損失内訳,
|
82
83
|
概況説明
|
83
84
|
].compact.join("\n")
|
84
85
|
render_erb(search_template('aoiro.xtx.erb'))
|
@@ -140,11 +141,12 @@ module Luca
|
|
140
141
|
|
141
142
|
@当期還付法人税 = refund_tax('1502')
|
142
143
|
@当期還付都道府県住民税 = refund_tax('1503')
|
143
|
-
@翌期還付都道府県住民税 = readable(@bs_data['1503'])
|
144
|
+
@翌期還付都道府県住民税 = readable(@bs_data['1503']) || 0
|
144
145
|
@当期還付市民税 = refund_tax('1505')
|
145
146
|
@翌期還付市民税 = readable(@bs_data['1505']) || 0
|
146
147
|
@事業税期首残高 = 期首未納事業税 > 0 ? 期首未納事業税 : (@当期還付事業税 * -1)
|
147
|
-
@仮払税金 =
|
148
|
+
@仮払税金 = [@翌期還付法人税, @翌期還付都道府県住民税, @翌期還付事業税, @翌期還付市民税]
|
149
|
+
.compact.sum
|
148
150
|
|
149
151
|
render_erb(search_template('beppyo4.xml.erb'))
|
150
152
|
end
|
@@ -186,6 +188,7 @@ module Luca
|
|
186
188
|
|
187
189
|
def 別表十五
|
188
190
|
@交際費 = readable(@pl_data.dig('C1B') || 0)
|
191
|
+
STDERR.puts "別表十五: 交際費計上額なし。必要に応じて帳票削除" if @交際費 == 0
|
189
192
|
@限度額 = @交際費 < 4_000_000 ? @交際費 : 4_000_000
|
190
193
|
@不算入額 = @交際費 < 4_000_000 ? 0 : @交際費 - 4_000_000
|
191
194
|
render_erb(search_template('beppyo15.xml.erb'))
|
@@ -198,7 +201,13 @@ module Luca
|
|
198
201
|
end
|
199
202
|
|
200
203
|
def 適用額明細
|
201
|
-
|
204
|
+
if 期末資本金 <= 10_000_000
|
205
|
+
STDERR.puts "適用額明細: 必要に応じて「少額減価償却資産の損金算入」(67条の5第1項, 00277。別表16[7])の確認が必要"
|
206
|
+
end
|
207
|
+
if @確定法人税額 == 0
|
208
|
+
STDERR.puts "別表一:適用額明細書の有無の確認が必要"
|
209
|
+
return nil
|
210
|
+
end
|
202
211
|
|
203
212
|
render_erb(search_template('tekiyougaku.xml.erb'))
|
204
213
|
end
|
@@ -209,7 +218,7 @@ module Luca
|
|
209
218
|
@概況給料 = gaikyo('C12')
|
210
219
|
@概況交際費 = gaikyo('C1B')
|
211
220
|
@概況減価償却 = gaikyo('C1P')
|
212
|
-
@概況地代租税 =
|
221
|
+
@概況地代租税 = ['C1E', 'C1I'].map { |k| gaikyo(k) }.compact.sum
|
213
222
|
@概況営業損益 = gaikyo('CA')
|
214
223
|
@概況特別利益 = gaikyo('F0')
|
215
224
|
@概況特別損失 = gaikyo('G0')
|
@@ -219,10 +228,10 @@ module Luca
|
|
219
228
|
@概況受取手形 = gaikyo('120')
|
220
229
|
@概況売掛金 = gaikyo('130')
|
221
230
|
@概況棚卸資産 = gaikyo('160')
|
222
|
-
@概況貸付金 =
|
231
|
+
@概況貸付金 = ['140', '333'].map { |k| gaikyo(k) }.compact.sum
|
223
232
|
@概況建物 = gaikyo('311')
|
224
233
|
@概況機械 = gaikyo('313')
|
225
|
-
@概況車船 =
|
234
|
+
@概況車船 = ['314', '318'].map { |k| gaikyo(k) }.compact.sum
|
226
235
|
@概況土地 = gaikyo('316')
|
227
236
|
@概況負債計 = gaikyo('8ZZ')
|
228
237
|
@概況支払手形 = gaikyo('510')
|
@@ -232,9 +241,9 @@ module Luca
|
|
232
241
|
@概況純資産 = gaikyo('9ZZ')
|
233
242
|
@代表者報酬 = gaikyo('C11')
|
234
243
|
@代表者借入 = gaikyo('5121')
|
235
|
-
@概況仕入 =
|
244
|
+
@概況仕入 = ['B11', 'B12'].map { |k| gaikyo(k) }.compact.sum
|
236
245
|
@概況外注費 = gaikyo('C1O')
|
237
|
-
@概況人件費 =
|
246
|
+
@概況人件費 = ['C11', 'C12', 'C13'].map { |k| gaikyo(k) }.compact.sum
|
238
247
|
render_erb(search_template('gaikyo.xml.erb'))
|
239
248
|
end
|
240
249
|
|
@@ -367,7 +376,8 @@ module Luca
|
|
367
376
|
end
|
368
377
|
|
369
378
|
def 別表五一仮払税金
|
370
|
-
未収仮払税金 = [
|
379
|
+
未収仮払税金 = ['1502', '1503', '1504', '1505']
|
380
|
+
.map { |k| @start_balance[k] }.compact.sum
|
371
381
|
還付税金 = [@当期還付法人税, @当期還付都道府県住民税, @当期還付事業税, @当期還付市民税].compact.sum
|
372
382
|
return '' if 未収仮払税金 == 0 && 還付税金 == 0 && @仮払税金 == 0
|
373
383
|
|
@@ -571,7 +581,7 @@ module Luca
|
|
571
581
|
end
|
572
582
|
|
573
583
|
def 別表五一期首資本
|
574
|
-
readable(
|
584
|
+
readable(['911', '913', '916'].map { |k| @start_balance.dig(k) }.compact.sum)
|
575
585
|
end
|
576
586
|
|
577
587
|
# 資本金、資本準備金、その他資本剰余金、自己株式(控除)の合算
|
@@ -648,11 +658,13 @@ module Luca
|
|
648
658
|
end
|
649
659
|
|
650
660
|
def 概況月仕入(idx)
|
651
|
-
|
661
|
+
['B11', 'B12']
|
662
|
+
.map { |k| gaikyo_month(idx, k) }.compact.sum
|
652
663
|
end
|
653
664
|
|
654
665
|
def 概況月人件費(idx)
|
655
|
-
|
666
|
+
['C11', 'C12', 'C13', 'C14']
|
667
|
+
.map { |k| gaikyo_month(idx, k) }.compact.sum
|
656
668
|
end
|
657
669
|
|
658
670
|
def 概況月外注費(idx)
|
@@ -690,10 +702,12 @@ module Luca
|
|
690
702
|
end
|
691
703
|
|
692
704
|
def proc_version
|
693
|
-
if @end_date >= Date.parse('
|
694
|
-
{ 'proc' => '
|
705
|
+
if @end_date >= Date.parse('2022-4-1')
|
706
|
+
{ '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' }
|
707
|
+
elsif @end_date >= Date.parse('2021-4-1')
|
708
|
+
{ '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' }
|
695
709
|
else
|
696
|
-
{ 'proc' => '20.0.2', 'HOA112' => '2.0', 'HOA116' => '1.0', 'HOA420' => '19.0', 'HOA522' => '6.0', 'HOK010' => '5.0' }
|
710
|
+
{ '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' }
|
697
711
|
end
|
698
712
|
end
|
699
713
|
|
data/lib/luca/jp/chihouzei.rb
CHANGED
@@ -82,7 +82,7 @@ module Luca
|
|
82
82
|
["R0102AA#{@form_vers['R0102AA']}", 別表九フォーム]
|
83
83
|
.compact.map{ |c| form_attr(c) }.join('')
|
84
84
|
when '23ku'
|
85
|
-
["R0102AA#{@form_vers['R0102AA']}", "
|
85
|
+
["R0102AA#{@form_vers['R0102AA']}", "R0102AG#{@form_vers['R0102AG']}", 別表九フォーム]
|
86
86
|
.compact.map{ |c| form_attr(c) }.join('')
|
87
87
|
when 'city'
|
88
88
|
["R0504AA180"].compact.map{ |c| form_attr(c) }.join('')
|
@@ -138,7 +138,7 @@ module Luca
|
|
138
138
|
|
139
139
|
def 第六号
|
140
140
|
@資本金準備金 = readable(['911', '9131'].map { |cd| @bs_data.dig(cd) }.compact.sum)
|
141
|
-
STDERR.puts "第六号様式:
|
141
|
+
STDERR.puts "第六号様式: 「決算確定の日」などの追記が必要。「国外関連者」の確認が必要"
|
142
142
|
render_erb(search_template('el-no6.xml.erb'))
|
143
143
|
end
|
144
144
|
|
@@ -180,7 +180,7 @@ module Luca
|
|
180
180
|
@所得割中間納付
|
181
181
|
end
|
182
182
|
|
183
|
-
#
|
183
|
+
# 災害損失は考慮していない
|
184
184
|
#
|
185
185
|
def 別表九各期青色損失
|
186
186
|
tags = @繰越損失管理.records
|
@@ -192,7 +192,7 @@ module Luca
|
|
192
192
|
%Q(<AMB00200>
|
193
193
|
<AMB00210>#{etax_date(@start_date)}</AMB00210>
|
194
194
|
<AMB00220>#{etax_date(@end_date)}</AMB00220>
|
195
|
-
<AMB00225
|
195
|
+
<AMB00225>1</AMB00225>
|
196
196
|
#{render_attr('AMB00230', deduction + record['amount'])}
|
197
197
|
#{render_attr('AMB00240', deduction)}
|
198
198
|
#{render_attr('AMB00250', record['amount'])}
|
@@ -250,10 +250,12 @@ module Luca
|
|
250
250
|
end
|
251
251
|
|
252
252
|
def proc_version
|
253
|
-
if @
|
254
|
-
{ 'R0102AA' => '
|
253
|
+
if @end_date >= Date.parse('2022-4-1')
|
254
|
+
{ 'R0102AA' => '211', 'R0102AG' => '211', 'R0102AM' => '211' }
|
255
|
+
elsif @start_date >= Date.parse('2020-4-1')
|
256
|
+
{ 'R0102AA' => '200', 'R0102AG' => '120','R0102AM' => '200' }
|
255
257
|
else
|
256
|
-
{ 'R0102AA' => '190', 'R0102AM' => '190' }
|
258
|
+
{ 'R0102AA' => '190', 'R0102AG' => '120', 'R0102AM' => '190' }
|
257
259
|
end
|
258
260
|
end
|
259
261
|
|
@@ -38,7 +38,8 @@
|
|
38
38
|
<BGB00000>
|
39
39
|
<%= render_attr('BGB00010', 所得金額) %>
|
40
40
|
<%= render_attr('BGB00020', @法人税額) %>
|
41
|
-
<%= render_attr('BGB00040', @法人税額) %>
|
41
|
+
<%= render_attr('BGB00040', @法人税額) if @form_vers['HOA112'].to_f < 4.0 %>
|
42
|
+
<%# BGB00055 税額控除超過額相当額の加算額 %>
|
42
43
|
<BGB00120>
|
43
44
|
<%= render_attr('BGB00150', @法人税額) %>
|
44
45
|
</BGB00120>
|
@@ -62,12 +63,21 @@
|
|
62
63
|
<%= render_attr('BGC00050', @地方法人税課税標準) %>
|
63
64
|
</BGC00010>
|
64
65
|
<%= render_attr('BGC00060', @地方法人税額) %>
|
66
|
+
<%# BGC00065 税額控除超過額相当額の加算額 %>
|
65
67
|
<%= render_attr('BGC00080', @地方法人税額) %>
|
66
68
|
<%= render_attr('BGC00120', @確定地方法人税額) %>
|
67
69
|
<%= render_attr('BGC00130', @地方法人税中間納付) %>
|
68
70
|
<%= render_attr('BGC00140', 納付税額(@確定地方法人税額, @地方法人税中間納付)) %>
|
69
71
|
<BGC00150>
|
70
|
-
|
72
|
+
<% if @form_vers['HOA112'].to_f >= 4.0 %>
|
73
|
+
<%# BGC00240 外国税額の還付金額 %>
|
74
|
+
<%= render_attr('BGC00250', 中間還付税額(@確定地方法人税額, @地方法人税中間納付)) %>
|
75
|
+
<BGC00260>
|
76
|
+
<%= render_attr('BGC00280', 中間還付税額(@確定地方法人税額, @地方法人税中間納付)) %>
|
77
|
+
</BGC00260>
|
78
|
+
<% else %>
|
79
|
+
<%= render_attr('BGC00170', 中間還付税額(@確定地方法人税額, @地方法人税中間納付)) %>
|
80
|
+
<% end %>
|
71
81
|
</BGC00150>
|
72
82
|
</BGC00000>
|
73
83
|
</HOA112>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<HOE200 page="1" VR="
|
1
|
+
<HOE200 page="1" VR="<%= @form_vers['HOE200'] %>" id="HOE200" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
|
2
2
|
<EGA00000>
|
3
3
|
<EGA00010>
|
4
4
|
<EGA00020 IDREF="JIGYO_NENDO_FROM"/>
|
@@ -28,13 +28,14 @@
|
|
28
28
|
<% end %>
|
29
29
|
</ARC00100>
|
30
30
|
<%= 別表四還付事業税 %>
|
31
|
+
<%# ARC00360 通算法人に係る加算額 %>
|
31
32
|
<% if (@当期還付法人税 + @当期還付都道府県住民税 + @当期還付市民税) > 0 %>
|
32
|
-
<
|
33
|
-
<%= render_attr('
|
34
|
-
<% ['
|
33
|
+
<ARC00275>
|
34
|
+
<%= render_attr('ARC00280', '前期仮払税金否認') %>
|
35
|
+
<% ['ARC00290', 'ARC00300'].each do |code| %>
|
35
36
|
<%= render_attr(code, [@当期還付法人税, @当期還付都道府県住民税, @当期還付市民税].compact.sum) %>
|
36
37
|
<% end %>
|
37
|
-
</
|
38
|
+
</ARC00275>
|
38
39
|
<% end %>
|
39
40
|
<ARC00325>
|
40
41
|
<% ['ARC00330', 'ARC00340'].each do |code| %>
|
@@ -53,6 +54,7 @@
|
|
53
54
|
<%= render_attr(code, [@当期還付法人税, @当期還付都道府県住民税, @当期還付市民税].compact.sum) %>
|
54
55
|
<% end %>
|
55
56
|
</ARD00100>
|
57
|
+
<%# ARD00400 通算法人に係る減算額 %>
|
56
58
|
<% if (法人税仮払納付額 + 都道府県民税仮払納付 + 市民税仮払納付) > 0 %>
|
57
59
|
<ARD00215>
|
58
60
|
<%= render_attr('ARD00220', '仮払税金認定損') %>
|
@@ -100,6 +102,13 @@
|
|
100
102
|
<%= render_attr(code, @別表四調整所得) %>
|
101
103
|
<% end %>
|
102
104
|
</ARS00000>
|
105
|
+
<%# ARS10000 更生欠損金又は民事再生等評価換えが行われる場合の再生等欠損金の損金算入額 %>
|
106
|
+
<%# ARS20000 通算対象欠損金額の損金算入額又は通算対象所得金額の益金算入額 %>
|
107
|
+
<ARS50000>
|
108
|
+
<% ['ARS50010', 'ARS50020'].each do |code| %>
|
109
|
+
<%= render_attr(code, @別表四調整所得) %>
|
110
|
+
<% end %>
|
111
|
+
</ARS50000>
|
103
112
|
<ART00000>
|
104
113
|
<% ['ART00010', 'ART00020'].each do |code| %>
|
105
114
|
<%= render_attr(code, @繰越損失管理.deduction) %>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<HOA511 page="1" VR="
|
1
|
+
<HOA511 page="1" VR="<%= @form_vers['HOA511'] %>" id="HOA511" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
|
2
2
|
<ICA00000>
|
3
3
|
<ICA00010>
|
4
4
|
<ICA00020 IDREF="JIGYO_NENDO_FROM"/>
|
@@ -39,6 +39,7 @@
|
|
39
39
|
</ICB00550>
|
40
40
|
<%= render_attr('ICB00610', 期末未納法人税) %>
|
41
41
|
</ICB00530>
|
42
|
+
<%# ICB00860 未払通算税効果額 %>
|
42
43
|
<ICB00620>
|
43
44
|
<%= render_attr('ICB00630', 期首未納都道府県民税) %>
|
44
45
|
<ICB00640>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<HOB710 page="1" VR="
|
1
|
+
<HOB710 page="1" VR="<%= @form_vers['HOB710'] %>" id="HOB710" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
|
2
2
|
<MCA00000>
|
3
3
|
<MCA00010>
|
4
4
|
<MCA00020 IDREF="JIGYO_NENDO_FROM"/>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<
|
1
|
+
<R0102AG<%= @form_vers['R0102AG'] %> xmlns="http://eltax.jp/HOJIN_DOFUKEN" vr="<%= @form_vers['R0102AG'] %>" page="" seiseiSoft="<%= @software %>" seiseiVr="1" seiseiDay="<%= Date.today.strftime('%Y%m%d') %>" seiseiNM="<%= it_part_config('nozeisha_nm') %>" koshinSoft="" koshinVr="" koshinDay="" koshinNM="" taari="">
|
2
2
|
<AGA_JIGYO_SDATE idref="SDATE">
|
3
3
|
<gen:era></gen:era><gen:yy></gen:yy><gen:mm></gen:mm><gen:dd></gen:dd>
|
4
4
|
<gen:yyyymmdd></gen:yyyymmdd>
|
@@ -142,37 +142,41 @@
|
|
142
142
|
<AGF00800 />
|
143
143
|
<AGF00900><%= "12" if @employee <= 50 %></AGF00900>
|
144
144
|
<AGF01000><%= @均等割 if @employee <= 50 %></AGF01000>
|
145
|
-
<
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
145
|
+
<AGF01050>
|
146
|
+
<AGF01100 />
|
147
|
+
<AGF01200 />
|
148
|
+
<AGF01300 />
|
149
|
+
<AGF01400 />
|
150
|
+
<AGF01500 />
|
151
|
+
<AGF01600 />
|
152
|
+
<AGF01700 />
|
153
|
+
<AGF01800 />
|
154
|
+
<AGF01900 />
|
155
|
+
<AGF02000 />
|
156
|
+
<AGF02100 />
|
157
|
+
<AGF02200 />
|
158
|
+
<AGF02300 />
|
159
|
+
<AGF02400 />
|
160
|
+
</AGF01050>
|
159
161
|
<AGF02500 />
|
160
162
|
<AGF02600 />
|
161
163
|
<AGF02700 />
|
162
|
-
<
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
164
|
+
<AGF02750>
|
165
|
+
<AGF02800 />
|
166
|
+
<AGF02900 />
|
167
|
+
<AGF03000 />
|
168
|
+
<AGF03100 />
|
169
|
+
<AGF03200 />
|
170
|
+
<AGF03300 />
|
171
|
+
<AGF03400 />
|
172
|
+
<AGF03500 />
|
173
|
+
<AGF03600 />
|
174
|
+
<AGF03700 />
|
175
|
+
<AGF03800 />
|
176
|
+
<AGF03900 />
|
177
|
+
<AGF04000 />
|
178
|
+
<AGF04100 />
|
179
|
+
</AGF02750>
|
176
180
|
<AGF04200><%= @均等割 %></AGF04200>
|
177
181
|
<AGG00100 />
|
178
|
-
</
|
182
|
+
</R0102AG<%= @form_vers['R0102AG'] %>>
|
@@ -70,6 +70,7 @@
|
|
70
70
|
<AAB00800><%= 法人税割税率[0] unless tokyo23? %></AAB00800>
|
71
71
|
<AAB00810><%= 法人税割[0] %></AAB00810>
|
72
72
|
<AAB00820 />
|
73
|
+
<AAB00830 />
|
73
74
|
<AAB00850 />
|
74
75
|
<AAB00900 />
|
75
76
|
<AAB01000 />
|
@@ -194,7 +195,7 @@
|
|
194
195
|
<AAI00400>1</AAI00400>
|
195
196
|
<AAI00450><%= @税額.dig(:houjin, :kokuzei) %></AAI00450>
|
196
197
|
<AAI00700><%= @税額.dig(:houjin, :kokuzei) > 200000 ? 1 : 2 %></AAI00700>
|
197
|
-
<AAI00800
|
198
|
+
<AAI00800>2</AAI00800>
|
198
199
|
<AAJ_DAIRI_NAME></AAJ_DAIRI_NAME>
|
199
200
|
<AAJ_DAIRI_TEL_NUM></AAJ_DAIRI_TEL_NUM>
|
200
201
|
</R0102AA<%= @form_vers['R0102AA'] %>>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<HOE990 page="1" VR="
|
1
|
+
<HOE990 page="1" VR="<%= @form_vers['HOE990'] %>" id="HOE990" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
|
2
2
|
<MAA00000>
|
3
3
|
<MAA00010>
|
4
4
|
<MAA00020 IDREF="JIGYO_NENDO_FROM"/>
|
@@ -22,7 +22,7 @@
|
|
22
22
|
</MAA00140>
|
23
23
|
<MAA00170 IDREF="JIGYO_NAIYO"/>
|
24
24
|
</MAA00000>
|
25
|
-
<% if 所得金額 > 0 %>
|
25
|
+
<% if 所得金額 > 0 && 期末資本金 <= 100_000_000 %>
|
26
26
|
<MAB00000>
|
27
27
|
<MAB00010>
|
28
28
|
<%= render_attr('MAB00020', 42) %>
|
@@ -1,4 +1,13 @@
|
|
1
1
|
<HOI141 page="1" VR="5.0" id="HOI141" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
|
2
|
+
<ILA00000>
|
3
|
+
<ILA00010>
|
4
|
+
<ILA00025><kubun_CD>01</kubun_CD></ILA00025>
|
5
|
+
<ILA00030><%= it_part_config('daihyo_nm') %></ILA00030>
|
6
|
+
<ILA00045><kubun_CD>01</kubun_CD></ILA00045>
|
7
|
+
<ILA00050><%= it_part_config('daihyo_adr') %></ILA00050>
|
8
|
+
<ILA00060><kubun_CD>1</kubun_CD></ILA00060>
|
9
|
+
</ILA00010>
|
10
|
+
</ILA00000>
|
2
11
|
<ILB00000>
|
3
12
|
<ILB00010>
|
4
13
|
<%= render_attr('ILB00020', @役員報酬) %>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<HOI160 page="1" VR="3.0" id="HOI160" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
|
2
|
+
<% @雑益.each do |profit| %>
|
3
|
+
<HPB00000>
|
4
|
+
<HPB00100>雑収入</HPB00100>
|
5
|
+
<%= render_attr('HPB00200', profit[:note]) %>
|
6
|
+
<%= render_attr('HPB00500', profit[:amount]) %>
|
7
|
+
</HPB00000>
|
8
|
+
<% end %>
|
9
|
+
<% @雑損失.each do |loss| %>
|
10
|
+
<HPC00000>
|
11
|
+
<HPC00100>雑損失</HPC00100>
|
12
|
+
<%= render_attr('HPC00200', loss[:note]) %>
|
13
|
+
<%= render_attr('HPC00500', loss[:amount]) %>
|
14
|
+
</HPC00000>
|
15
|
+
<% end %>
|
16
|
+
</HOI160>
|
data/lib/luca/jp/uchiwake.rb
CHANGED
@@ -169,6 +169,7 @@ module Luca #:nodoc:
|
|
169
169
|
account_codes = uchiwake_account_config('C1E').map { |account| account['code'].to_s }
|
170
170
|
return nil if account_codes.length == 0
|
171
171
|
|
172
|
+
STDERR.puts "勘定科目内訳書(地代家賃)の支払対象期間の追記が必要"
|
172
173
|
@地代家賃 = @bs_data.each.with_object({}) do |(k, v), h|
|
173
174
|
next unless account_codes.include?(k)
|
174
175
|
next unless readable(v || 0) > 0
|
@@ -191,10 +192,66 @@ module Luca #:nodoc:
|
|
191
192
|
end
|
192
193
|
|
193
194
|
def 役員報酬内訳
|
195
|
+
STDERR.puts "勘定科目内訳書(役員報酬)の個人別金額の追記が必要"
|
194
196
|
@役員報酬 = readable(@pl_data.dig('C11') || 0)
|
195
197
|
@給料 = readable(@pl_data.dig('C12') || 0)
|
196
198
|
render_erb(search_template('yakuin-meisai.xml.erb'))
|
197
199
|
end
|
200
|
+
|
201
|
+
# 雑収入のうち、10万円以上または未収入金とのセット仕訳
|
202
|
+
# 雑収入の補助科目のうち、10万円以上
|
203
|
+
# 雑損失とその補助科目のうち、10万円以上の仕訳
|
204
|
+
#
|
205
|
+
def 雑益雑損失内訳フォーム
|
206
|
+
@雑益 = LucaBook::List.term(@start_date.year, @start_date.month, @end_date.year, @end_date.month, code: 'D16')
|
207
|
+
.data
|
208
|
+
.map { |journal| {
|
209
|
+
note: journal[:note],
|
210
|
+
amount: readable(journal[:credit].select { |entry| entry[:code] == 'D16' }
|
211
|
+
.map { |entry| entry[:amount] }.compact.sum),
|
212
|
+
tax_refund: journal[:credit].index { |entry| entry[:code] =~ /^150/ }
|
213
|
+
} }
|
214
|
+
.select { |obj| obj[:amount] >= 100_000 || obj[:tax_refund] }
|
215
|
+
@pl_data.keys
|
216
|
+
.select { |k| k =~ /^D16[0-9A-Z]+/ && @pl_data[k] >= 100_000 }
|
217
|
+
.each do |k|
|
218
|
+
@雑益.push({
|
219
|
+
note: self.class.dict.dig(k)[:label],
|
220
|
+
amount: @pl_data[k]
|
221
|
+
})
|
222
|
+
end
|
223
|
+
@雑益 = @雑益.sort_by{ |obj| obj[:amount] }
|
224
|
+
.reverse.take(10)
|
225
|
+
|
226
|
+
@雑損失 = LucaBook::List.term(@start_date.year, @start_date.month, @end_date.year, @end_date.month, code: 'E16')
|
227
|
+
.data
|
228
|
+
.map { |journal| {
|
229
|
+
note: journal[:note],
|
230
|
+
amount: readable(journal[:debit].select { |entry| entry[:code] == 'E16' }
|
231
|
+
.map { |entry| entry[:amount] }.compact.sum)
|
232
|
+
} }
|
233
|
+
.select { |obj| obj[:amount] >= 100_000 }
|
234
|
+
@pl_data.keys
|
235
|
+
.select { |k| k =~ /^E16[0-9A-Z]+/ && @pl_data[k] >= 100_000 }
|
236
|
+
.each do |k|
|
237
|
+
@雑損失.push({
|
238
|
+
note: self.class.dict.dig(k)[:label],
|
239
|
+
amount: @pl_data[k]
|
240
|
+
})
|
241
|
+
end
|
242
|
+
@雑損失 = @雑損失.sort_by{ |obj| obj[:amount] }
|
243
|
+
.reverse.take(10)
|
244
|
+
return nil if @雑益.empty? && @雑損失.empty?
|
245
|
+
|
246
|
+
'HOI160'
|
247
|
+
end
|
248
|
+
|
249
|
+
def 雑益雑損失内訳
|
250
|
+
return nil if @雑益.empty? && @雑損失.empty?
|
251
|
+
|
252
|
+
STDERR.puts "勘定科目内訳書(雑益雑損失)の内容確認"
|
253
|
+
render_erb(search_template('zatsueki-meisai.xml.erb'))
|
254
|
+
end
|
198
255
|
end
|
199
256
|
end
|
200
257
|
end
|
data/lib/luca/jp/urikake.rb
CHANGED
@@ -12,9 +12,10 @@ module Luca
|
|
12
12
|
class Urikake < LucaDeal::Invoice
|
13
13
|
@dirname = 'invoices'
|
14
14
|
|
15
|
-
def report(total = nil)
|
15
|
+
def report(total = nil, encoding = nil)
|
16
16
|
listed_amount = 0
|
17
|
-
|
17
|
+
encoding ||= 'SJIS'
|
18
|
+
str = CSV.generate(String.new, headers: false, col_sep: ',', encoding: encoding) do |f|
|
18
19
|
list.map do |invoice|
|
19
20
|
amount = readable(invoice.dig('subtotal', 0, 'items') + invoice.dig('subtotal', 0, 'tax'))
|
20
21
|
listed_amount += amount
|
@@ -23,6 +24,8 @@ module Luca
|
|
23
24
|
if total
|
24
25
|
f << ['3', '0', '売掛金', 'その他', nil, total - listed_amount, nil ]
|
25
26
|
f << ['3', '1', nil, nil, nil, total, nil ]
|
27
|
+
else
|
28
|
+
f << ['3', '1', nil, nil, nil, listed_amount, nil ]
|
26
29
|
end
|
27
30
|
end
|
28
31
|
File.open('HOI030_3.0.csv', 'w') { |f| f.write(str) }
|
data/lib/luca/jp/version.rb
CHANGED
data/lib/luca_salary/jp.rb
CHANGED
@@ -16,13 +16,15 @@ class LucaSalary::Jp < LucaSalary::Base
|
|
16
16
|
__dir__
|
17
17
|
end
|
18
18
|
|
19
|
-
def calc_payment(profile)
|
19
|
+
def calc_payment(profile, date)
|
20
|
+
配偶者控除 = profile.include?('spouse')
|
21
|
+
扶養控除 = self.class.扶養控除対象者の数(profile['family'], Date.new(date.year, 12, 31))
|
20
22
|
{}.tap do |h|
|
21
23
|
select_code(profile, '1').each { |k, v| h[k] = v }
|
22
24
|
h['201'] = @insurance.health_insurance_salary(insurance_rank(profile))
|
23
25
|
h['202'] = @insurance.pension_salary(pension_rank(profile))
|
24
26
|
tax_base = self.class.sum_code(h, '1', income_tax_exception) - h['201'] - h['202']
|
25
|
-
h['203'] = JpNationalTax::IncomeTax.calc_kouran(tax_base, Date.today,
|
27
|
+
h['203'] = JpNationalTax::IncomeTax.calc_kouran(tax_base, Date.today, 配偶者控除, 扶養控除)
|
26
28
|
h['211'] = resident_tax(profile)
|
27
29
|
select_code(profile, '3').each { |k, v| h[k] = v }
|
28
30
|
select_code(profile, '4').each { |k, v| h[k] = v }
|
@@ -31,13 +33,17 @@ class LucaSalary::Jp < LucaSalary::Base
|
|
31
33
|
end
|
32
34
|
end
|
33
35
|
|
34
|
-
def self.year_total(payment, date)
|
36
|
+
def self.year_total(profile, payment, date)
|
37
|
+
raise '年末調整の対象となりません' if payment['1'] == 0
|
38
|
+
|
35
39
|
payment.tap do |p|
|
36
40
|
p['911'] = JpNationalTax::IncomeTax.basic_deduction(p['1'], date)
|
37
|
-
p['916'] =
|
41
|
+
p['916'] = 配偶者控除の金額(p['1'], profile['spouse'], date)
|
42
|
+
p['917'] = 配偶者特別控除の金額(p['1'], profile['spouse'], date)
|
43
|
+
p['918'] = 扶養控除の金額(profile['family'], date)
|
38
44
|
p['912'] = ['201', '202', '204', '205'].map{ |cd| p[cd] }.compact.sum
|
39
45
|
p['901'] = JpNationalTax::IncomeTax.year_salary_taxable(p['1'], date)
|
40
|
-
p['941'] = p['901'] -
|
46
|
+
p['941'] = p['901'] - ['911', '912', '916', '917', '918'].map{ |cd| p[cd] }.compact.sum
|
41
47
|
p['961'] = JpNationalTax::IncomeTax.year_tax(p['941'], date)
|
42
48
|
diff = p['961'] - p['203']
|
43
49
|
if diff.positive?
|
@@ -54,18 +60,95 @@ class LucaSalary::Jp < LucaSalary::Base
|
|
54
60
|
end
|
55
61
|
end
|
56
62
|
|
57
|
-
def self
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
63
|
+
def self.配偶者控除の金額(income, spouse, date)
|
64
|
+
puts spouse
|
65
|
+
return nil if spouse.nil?
|
66
|
+
|
67
|
+
puts spouse
|
68
|
+
spouse_salary = JpNationalTax::IncomeTax.year_salary_taxable(spouse['income'][date.year.to_s] || 0, date)
|
69
|
+
return 0 if spouse_salary > 480_000
|
70
|
+
|
71
|
+
salary = JpNationalTax::IncomeTax.year_salary_taxable(income || 0, date)
|
72
|
+
birth_date = spouse['birth_date'] || date
|
73
|
+
if salary <= 9_000_000
|
74
|
+
birth_date <= date.prev_year(70) ? 480_000 : 380_000
|
75
|
+
elsif salary <= 9_500_000
|
76
|
+
birth_date <= date.prev_year(70) ? 320_000 : 260_000
|
77
|
+
elsif salary <= 10_000_000
|
78
|
+
birth_date <= date.prev_year(70) ? 160_000 : 130_000
|
64
79
|
else
|
65
80
|
0
|
66
81
|
end
|
67
82
|
end
|
68
83
|
|
84
|
+
def self.配偶者特別控除の金額(income, spouse, date)
|
85
|
+
return nil if spouse.nil?
|
86
|
+
|
87
|
+
salary = JpNationalTax::IncomeTax.year_salary_taxable(income || 0, date)
|
88
|
+
return 0 if salary > 10_000_000
|
89
|
+
|
90
|
+
spouse_salary = JpNationalTax::IncomeTax.year_salary_taxable(spouse['income'][date.year.to_s] || 0, date)
|
91
|
+
return 0 if spouse_salary <= 480_000
|
92
|
+
return 0 if spouse_salary > 1_330_000
|
93
|
+
|
94
|
+
if salary <= 9_000_000
|
95
|
+
return 380_000 if spouse_salary <= 950_000
|
96
|
+
return 360_000 if spouse_salary <= 1_000_000
|
97
|
+
return 310_000 if spouse_salary <= 1_050_000
|
98
|
+
return 260_000 if spouse_salary <= 1_100_000
|
99
|
+
return 210_000 if spouse_salary <= 1_150_000
|
100
|
+
return 160_000 if spouse_salary <= 1_200_000
|
101
|
+
return 110_000 if spouse_salary <= 1_250_000
|
102
|
+
return 60_000 if spouse_salary <= 1_300_000
|
103
|
+
return 30_000
|
104
|
+
elsif salary <= 9_500_000
|
105
|
+
return 260_000 if spouse_salary <= 950_000
|
106
|
+
return 240_000 if spouse_salary <= 1_000_000
|
107
|
+
return 210_000 if spouse_salary <= 1_050_000
|
108
|
+
return 180_000 if spouse_salary <= 1_100_000
|
109
|
+
return 140_000 if spouse_salary <= 1_150_000
|
110
|
+
return 110_000 if spouse_salary <= 1_200_000
|
111
|
+
return 80_000 if spouse_salary <= 1_250_000
|
112
|
+
return 40_000 if spouse_salary <= 1_300_000
|
113
|
+
return 20_000
|
114
|
+
else
|
115
|
+
return 130_000 if spouse_salary <= 950_000
|
116
|
+
return 120_000 if spouse_salary <= 1_000_000
|
117
|
+
return 110_000 if spouse_salary <= 1_050_000
|
118
|
+
return 90_000 if spouse_salary <= 1_100_000
|
119
|
+
return 70_000 if spouse_salary <= 1_150_000
|
120
|
+
return 60_000 if spouse_salary <= 1_200_000
|
121
|
+
return 40_000 if spouse_salary <= 1_250_000
|
122
|
+
return 20_000 if spouse_salary <= 1_300_000
|
123
|
+
return 10_000
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
def self.扶養控除の金額(family, date)
|
128
|
+
return if family.nil?
|
129
|
+
|
130
|
+
family.map { |person| 各家族の扶養控除の額(person, date) }.sum
|
131
|
+
end
|
132
|
+
|
133
|
+
def self.各家族の扶養控除の額(person, date)
|
134
|
+
birth_date = person['birth_date']
|
135
|
+
return 0 if birth_date.nil?
|
136
|
+
|
137
|
+
if birth_date > date.prev_year(16)
|
138
|
+
0
|
139
|
+
elsif birth_date <= date.prev_year(70)
|
140
|
+
person['live_with'] ? 580_000 : 480_000 # 老人扶養親族
|
141
|
+
elsif birth_date <= date.prev_year(19) and birth_date > date.prev_year(23)
|
142
|
+
630_000 # 特定扶養親族
|
143
|
+
else
|
144
|
+
380_000
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
def self.扶養控除対象者の数(family, date)
|
149
|
+
family.map { |person| 各家族の扶養控除の額(person, date) > 0 ? 1 : 0 }.sum
|
150
|
+
end
|
151
|
+
|
69
152
|
def income_tax_exception
|
70
153
|
%w[116 118 119 11A 11B]
|
71
154
|
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.
|
4
|
+
version: 0.16.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chuma Takahiro
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-01-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lucabook
|
@@ -157,6 +157,7 @@ files:
|
|
157
157
|
- lib/luca/jp/templates/tekiyougaku.xml.erb
|
158
158
|
- lib/luca/jp/templates/yakuin-meisai.xml.erb
|
159
159
|
- lib/luca/jp/templates/yokin-meisai.xml.erb
|
160
|
+
- lib/luca/jp/templates/zatsueki-meisai.xml.erb
|
160
161
|
- lib/luca/jp/uchiwake.rb
|
161
162
|
- lib/luca/jp/urikake.rb
|
162
163
|
- lib/luca/jp/util.rb
|
@@ -173,7 +174,7 @@ metadata:
|
|
173
174
|
homepage_uri: https://github.com/chumaltd/luca-jp
|
174
175
|
source_code_uri: https://github.com/chumaltd/luca-jp
|
175
176
|
changelog_uri: https://github.com/chumaltd/luca-jp/CHANGELOG.md
|
176
|
-
post_install_message:
|
177
|
+
post_install_message:
|
177
178
|
rdoc_options: []
|
178
179
|
require_paths:
|
179
180
|
- lib
|
@@ -188,8 +189,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
188
189
|
- !ruby/object:Gem::Version
|
189
190
|
version: '0'
|
190
191
|
requirements: []
|
191
|
-
rubygems_version: 3.
|
192
|
-
signing_key:
|
192
|
+
rubygems_version: 3.4.10
|
193
|
+
signing_key:
|
193
194
|
specification_version: 4
|
194
195
|
summary: JP tax extension for Luca
|
195
196
|
test_files: []
|