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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 971706dfd736c70a5dffcdda324a58d897af8a50387c1a69c2af3e22e34c0eff
4
- data.tar.gz: 957ad4e2e2dc19be39a17f390a5f281544e07b7f3417e04be1f5db9f04f31e15
3
+ metadata.gz: 4397cf29a4b348c06c854a7317bf1c7a63feef296635ffe5d8cc8ab237a5ca86
4
+ data.tar.gz: 8f0e650b20dcd79af950dfaf09b3e5df4f7e32094651d3661fe7f232c58685fd
5
5
  SHA512:
6
- metadata.gz: e77e582ac90d74cb43695ee208ca3a9cb90621695d62205418498ebbd21fd59f0ef97640374d1d2094b8a64a91bccb79d10d26db0d5e658f4890ccd9ca53b11e
7
- data.tar.gz: 3b998804fa9e249471af0ce4b041bbba8e67d898e2a1fc9fffae8262257edb75845a0a228cc94fae06c13430d051d1b7e47db762e573de852dae7cc8650d19b4
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::Chihouzei.range(*args).export_json
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
- puts Luca::Jp::Chihouzei.range(*args).kani
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
- @version = '20.0.2'
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('C10')
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
- (別表二上位株数 * 100.0 / beppyo2_config('total_shares')).round(1)
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
- (別表二上位議決権数 * 100.0 / beppyo2_config('total_votes')).round(1)
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, 'C10')
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
@@ -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
- @jimusho_code = eltax_config('jimusho_code')
28
- @jimusho_name = eltax_config('jimusho_name')
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 = ['R0102AA190', 'R0102AG120', 別表九フォーム].compact.map{ |c| form_attr(c) }.join('')
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 = [第六号, 別表四三, 別表九].compact.join("\n")
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
- [].tap do |res|
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
- @資本金準備金 = eltax_config('shihon') || it_part_config('shihon_kin')
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
- 'R0102AM190'
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
@@ -74,11 +74,12 @@ module Luca
74
74
 
75
75
  # 税引前当期利益をもとに計算
76
76
  # 消費税を租税公課に計上している場合、控除済みの金額
77
- # 未払事業税は精算時に認識
77
+ # 事業税は仮払経理の場合にも納付時損金/還付時益金
78
78
  #
79
79
  def 当期所得金額
80
80
  _, 納付事業税 = 未納事業税期中増減
81
- LucaSupport::Code.readable(@pl_data.dig('GA') - 納付事業税)
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 config.dig('jp', 'eltax', 'office_23ku')
116
- [70_000, 0]
117
- else
118
- [20_000, 50_000]
119
- end
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
- if config.dig('jp', 'eltax', 'office_23ku')
129
- [(課税標準 * 7 / 100).floor, 0]
130
- else
131
- [(課税標準 * 1 / 100).floor, (課税標準 * 6 / 100).floor]
132
- end
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 所得割400万以下(所得 = nil)
147
- ((所得400万以下(所得) * 3.5 / 100) / 100).floor * 100
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 所得割800万以下(所得 = nil)
164
- ((所得800万以下(所得) * 5.3 / 100) / 100).floor * 100
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 所得割800万超(所得 = nil)
179
- ((所得800万超(所得) * 7.0 / 100) / 100).floor * 100
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
@@ -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 << '<SHINKOKU_KBN ID="SHINKOKU_KBN"><kubun_CD>30</kubun_CD></SHINKOKU_KBN>'
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")
@@ -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
- @version = '20.0.0'
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.0" id="HOA116" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
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
- <QHC00040><kubun_CD>2</kubun_CD></QHC00040><%# 10.3% %>
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="2.0" id="HOA112" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
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', 別表二上位議決権数) %>